:: Free Order Sorted Universal Algebra
:: by Josef Urban
::
:: Received September 19, 2002
:: Copyright (c) 2002-2016 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies OSALG_1, MSUALG_2, OSALG_2, MSUALG_1, TARSKI, STRUCT_0, RELAT_1,
SEQM_3, PBOOLE, MSUALG_3, REALSET1, ZFMISC_1, XBOOLE_0, CARD_3, MSAFREE,
SUBSET_1, FINSEQ_1, MARGREL1, FUNCT_1, XXREAL_0, PARTFUN1, LANG1,
TDGROUP, DTCONSTR, TREES_3, TREES_4, NAT_1, TREES_2, OSALG_4, CARD_5,
NATTRA_1, CARD_LAR, QC_LANG1, EQREL_1, RELAT_2, MSUALG_4, COH_SP,
MCART_1, UNIALG_2, MEMBER_1, FUNCT_7, OSAFREE;
notations TARSKI, XBOOLE_0, ZFMISC_1, XTUPLE_0, SUBSET_1, ORDINAL1, RELAT_1,
RELSET_1, FUNCT_1, MCART_1, PARTFUN1, FUNCT_2, FINSEQ_1, FINSEQ_2,
PBOOLE, RELAT_2, TREES_2, CARD_3, EQREL_1, STRUCT_0, LANG1, TREES_3,
TREES_4, DTCONSTR, ORDERS_2, ORDERS_3, MSUALG_1, MSUALG_2, MSUALG_3,
MSUALG_4, OSALG_1, OSALG_2, OSALG_3, OSALG_4, MSAFREE, FUNCT_7;
constructors NAT_1, FINSEQOP, FUNCT_7, MSUALG_3, MSAFREE, ORDERS_3, OSALG_2,
OSALG_3, OSALG_4, RELSET_1, XTUPLE_0, NUMBERS;
registrations XBOOLE_0, SUBSET_1, RELAT_1, ORDINAL1, PARTFUN1, FUNCOP_1,
FUNCT_1, PBOOLE, TREES_2, TREES_3, STRUCT_0, DTCONSTR, MSUALG_1,
MSUALG_3, MSAFREE, MSUALG_4, MSUALG_9, OSALG_1, OSALG_4, RELSET_1,
FINSEQ_1, XTUPLE_0;
requirements BOOLE, SUBSET;
definitions TARSKI, XBOOLE_0, PBOOLE, MSUALG_3, OSALG_1, OSALG_3, OSALG_4;
equalities TARSKI, OSALG_4;
expansions TARSKI, PBOOLE, MSUALG_3, OSALG_1, OSALG_3, OSALG_4;
theorems TARSKI, FUNCT_1, FUNCT_2, ZFMISC_1, PBOOLE, CARD_3, MSUALG_1,
MSUALG_2, MSUALG_3, RELAT_1, LANG1, DTCONSTR, FINSEQ_1, TREES_4, TREES_1,
DOMAIN_1, RELSET_1, XBOOLE_0, OSALG_1, OSALG_2, OSALG_4, MSAFREE,
MSUALG_6, MSAFREE2, CARD_5, FINSEQ_2, FINSEQ_3, MSUALG_9, MSUALG_4,
EQREL_1, ORDERS_2, RELAT_2, PARTFUN1, ORDERS_1, FUNCOP_1, TREES_3,
XTUPLE_0, SUBSET_1;
schemes CLASSES1, FUNCT_1, RELSET_1, DTCONSTR, XBOOLE_0, FUNCT_2, PBOOLE;
begin
reserve S for OrderSortedSign;
:: REVISE: should rather be attribute
:: changing to MSSubset and its OSCl, to make free algebras easier
:: no good way how to retypeOSCL into OSSubset now?
definition
let S be OrderSortedSign, U0 be OSAlgebra of S;
mode OSGeneratorSet of U0 -> MSSubset of U0 means
:Def1:
for O being
OSSubset of U0 st O = OSCl it holds the Sorts of GenOSAlg(O) = the Sorts of U0;
existence
proof
set A = the Sorts of U0;
reconsider A as MSSubset of U0 by PBOOLE:def 18;
A1: A is OrderSortedSet of S by OSALG_1:17;
then reconsider A as OSSubset of U0 by OSALG_2:def 2;
take A;
set G = GenOSAlg(A);
A is OSSubset of G by OSALG_2:def 12;
then
A2: A c= the Sorts of G by PBOOLE:def 18;
the Sorts of G is MSSubset of U0 by MSUALG_2:def 9;
then
A3: the Sorts of G c= A by PBOOLE:def 18;
A = OSCl A by A1,OSALG_2:9;
hence thesis by A2,A3,PBOOLE:146;
end;
end;
theorem
for S be OrderSortedSign, U0 be strict non-empty OSAlgebra of S, A be
MSSubset of U0 holds A is OSGeneratorSet of U0 iff for O being OSSubset of U0
st O = OSCl A holds GenOSAlg(O) = U0
proof
let S be OrderSortedSign, U0 be strict non-empty OSAlgebra of S, A be
MSSubset of U0;
thus A is OSGeneratorSet of U0 implies for O being OSSubset of U0 st O =
OSCl A holds GenOSAlg(O) = U0
proof
reconsider U1 = U0 as MSSubAlgebra of U0 by MSUALG_2:5;
assume
A1: A is OSGeneratorSet of U0;
let O be OSSubset of U0;
assume O = OSCl A;
then the Sorts of GenOSAlg(O) = the Sorts of U1 by A1,Def1;
hence thesis by MSUALG_2:9;
end;
assume
A2: for O being OSSubset of U0 st O = OSCl A holds GenOSAlg(O) = U0;
let O be OSSubset of U0;
assume O = OSCl A;
hence thesis by A2;
end;
:: renaming to osfree - if OSGeneratorSet and GeneratorSet become
:: attributes, Mizar would be puzzled
:: we do this for monotone osas only, though more general approach is possible
definition
let S;
let U0 be monotone OSAlgebra of S;
let IT be OSGeneratorSet of U0;
attr IT is osfree means
for U1 be monotone non-empty OSAlgebra of S for f be
ManySortedFunction of IT,the Sorts of U1 ex h be ManySortedFunction of U0,U1 st
h is_homomorphism U0,U1 & h is order-sorted & h || IT = f;
end;
definition
let S be OrderSortedSign;
let IT be monotone OSAlgebra of S;
attr IT is osfree means
ex G being OSGeneratorSet of IT st G is osfree;
end;
begin
::
:: Construction of Free Order Sorted Algebras for Given Signature
::
definition
let S be OrderSortedSign, X be ManySortedSet of S;
func OSREL(X) -> Relation of ([:the carrier' of S,{the carrier of S}:] \/
Union (coprod X)), (([:the carrier' of S,{the carrier of S}:] \/ Union (coprod
X))*) means
:Def4:
for a be Element of [:the carrier' of S,{the carrier of S}:]
\/ Union (coprod X), b be Element of ([:the carrier' of S,{the carrier of S}:]
\/ Union (coprod X))* holds [a,b] in it iff a in [:the carrier' of S,{the
carrier of S}:] & for o be OperSymbol of S st [o,the carrier of S] = a holds
len b = len (the_arity_of o) & for x be set st x in dom b holds (b.x in [:the
carrier' of S,{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the
carrier of S] = b.x holds (the_result_sort_of o1) <= (the_arity_of o)/.x) & (b.
x in Union (coprod X) implies ex i being Element of S st i <= (the_arity_of o)
/.x & b.x in coprod(i,X));
existence
proof
set O = [:the carrier' of S,{the carrier of S}:] \/ Union (coprod X);
defpred P[Element of O, Element of O*] means $1 in [:the carrier' of S,{
the carrier of S}:] & for o be OperSymbol of S st [o,the carrier of S] = $1
holds len $2 = len (the_arity_of o) & for x be set st x in dom $2 holds ($2.x
in [:the carrier' of S,{the carrier of S}:] implies for o1 be OperSymbol of S
st [o1,the carrier of S] = $2.x holds the_result_sort_of o1 <= (the_arity_of o)
/.x) & ($2.x in Union (coprod X) implies ex i being Element of S st i <= (
the_arity_of o)/.x & $2.x in coprod(i,X));
consider R be Relation of O,O* such that
A1: for a be Element of O, b be Element of O* holds [a,b] in R iff P[a
,b] from RELSET_1:sch 2;
take R;
let a be Element of O, b be Element of O*;
thus [a,b] in R implies a in [:the carrier' of S,{the carrier of S}:] &
for o be OperSymbol of S st [o,the carrier of S] = a holds len b = len (
the_arity_of o) & for x be set st x in dom b holds (b.x in [:the carrier' of S,
{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier of S]
= b.x holds the_result_sort_of o1 <= (the_arity_of o)/.x) & (b.x in Union (
coprod X) implies ex i being Element of S st i <= (the_arity_of o)/.x & b.x in
coprod(i,X)) by A1;
assume that
A2: a in [:the carrier' of S,{the carrier of S}:] and
A3: for o be OperSymbol of S st [o,the carrier of S] = a holds len b =
len (the_arity_of o) & for x be set st x in dom b holds (b.x in [:the carrier'
of S,{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier
of S] = b.x holds the_result_sort_of o1 <= (the_arity_of o)/.x) & (b.x in Union
(coprod X) implies ex i being Element of S st i <= (the_arity_of o)/.x & b.x in
coprod(i,X));
thus thesis by A1,A2,A3;
end;
uniqueness
proof
set O = [:the carrier' of S,{the carrier of S}:] \/ Union (coprod X);
let R,P be Relation of O,O*;
assume that
A4: for a be Element of O, b be Element of O* holds [a,b] in R iff a
in [:the carrier' of S,{the carrier of S}:] & for o be OperSymbol of S st [o,
the carrier of S] = a holds len b = len (the_arity_of o) & for x be set st x in
dom b holds (b.x in [:the carrier' of S,{the carrier of S}:] implies for o1 be
OperSymbol of S st [o1,the carrier of S] = b.x holds the_result_sort_of o1 <= (
the_arity_of o)/.x) & (b.x in Union (coprod X) implies ex i being Element of S
st i <= (the_arity_of o)/.x & b.x in coprod(i,X)) and
A5: for a be Element of O, b be Element of O* holds [a,b] in P iff a
in [:the carrier' of S,{the carrier of S}:] & for o be OperSymbol of S st [o,
the carrier of S] = a holds len b = len (the_arity_of o) & for x be set st x in
dom b holds (b.x in [:the carrier' of S,{the carrier of S}:] implies for o1 be
OperSymbol of S st [o1,the carrier of S] = b.x holds the_result_sort_of o1 <= (
the_arity_of o)/.x) & (b.x in Union (coprod X) implies ex i being Element of S
st i <= (the_arity_of o)/.x & b.x in coprod(i,X));
for x,y be object holds [x,y] in R iff [x,y] in P
proof
let x,y be object;
thus [x,y] in R implies [x,y] in P
proof
assume
A6: [x,y] in R;
then reconsider a = x as Element of O by ZFMISC_1:87;
reconsider b = y as Element of O* by A6,ZFMISC_1:87;
[a,b] in R by A6;
then
A7: a in [:the carrier' of S,{the carrier of S}:] by A4;
for o be OperSymbol of S st [o,the carrier of S] = a holds len b
= len (the_arity_of o) & for x be set st x in dom b holds (b.x in [:the
carrier' of S,{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,
the carrier of S ] = b.x holds the_result_sort_of o1 <= (the_arity_of o)/.x) &
(b.x in Union ( coprod X) implies ex i being Element of S st i <= (the_arity_of
o)/.x & b.x in coprod(i,X)) by A4,A6;
hence thesis by A5,A7;
end;
assume
A8: [x,y] in P;
then reconsider a = x as Element of O by ZFMISC_1:87;
reconsider b = y as Element of O* by A8,ZFMISC_1:87;
[a,b] in P by A8;
then
A9: a in [:the carrier' of S,{the carrier of S}:] by A5;
for o be OperSymbol of S st [o,the carrier of S] = a holds len b =
len (the_arity_of o) & for x be set st x in dom b holds (b.x in [:the carrier'
of S,{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier
of S ] = b.x holds the_result_sort_of o1 <= (the_arity_of o)/.x) & (b.x in
Union ( coprod X) implies ex i being Element of S st i <= (the_arity_of o)/.x &
b.x in coprod(i,X)) by A5,A8;
hence thesis by A4,A9;
end;
hence thesis by RELAT_1:def 2;
end;
end;
reserve S for OrderSortedSign,
X for ManySortedSet of S,
o for OperSymbol of S ,
b for Element of ([:the carrier' of S,{the carrier of S}:] \/ Union (coprod X
))*;
theorem Th2:
[[o,the carrier of S],b] in OSREL(X) iff len b = len (
the_arity_of o) & for x be set st x in dom b holds (b.x in [:the carrier' of S,
{the carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier of S]
= b.x holds (the_result_sort_of o1) <= (the_arity_of o)/.x) & (b.x in Union (
coprod X) implies ex i being Element of S st i <= (the_arity_of o)/.x & b.x in
coprod(i,X))
proof
defpred P[OperSymbol of S,Element of ([:the carrier' of S,{the carrier of S}
:] \/ Union (coprod X))*] means len $2 = len (the_arity_of $1) & for x be set
st x in dom $2 holds ($2.x in [:the carrier' of S,{the carrier of S}:] implies
for o1 be OperSymbol of S st [o1,the carrier of S] = $2.x holds
the_result_sort_of o1 <= (the_arity_of $1)/.x) & ($2.x in Union (coprod X)
implies ex i being Element of S st i <= (the_arity_of $1)/.x & b.x in coprod(i,
X));
set a = [o,the carrier of S];
the carrier of S in {the carrier of S} by TARSKI:def 1;
then
A1: a in [:the carrier' of S,{the carrier of S}:] by ZFMISC_1:87;
then reconsider
a as Element of [:the carrier' of S,{the carrier of S}:] \/ Union
(coprod X) by XBOOLE_0:def 3;
thus [[o,the carrier of S],b] in OSREL(X) implies P[o,b]
proof
assume [[o,the carrier of S],b] in OSREL(X);
then for o1 be OperSymbol of S st [o1,the carrier of S] = a holds P[o1,b]
by Def4;
hence thesis;
end;
assume
A2: P[o,b];
now
let o1 be OperSymbol of S;
assume [o1,the carrier of S] = a;
then o1 = o by XTUPLE_0:1;
hence P[o1,b] by A2;
end;
hence thesis by A1,Def4;
end;
definition
let S be OrderSortedSign, X be ManySortedSet of S;
func DTConOSA(X) -> DTConstrStr equals
DTConstrStr (# [:the carrier' of S,{
the carrier of S}:] \/ Union (coprod X), OSREL(X) #);
correctness;
end;
registration
let S be OrderSortedSign, X be ManySortedSet of S;
cluster DTConOSA(X) -> strict non empty;
coherence;
end;
theorem Th3:
for S be OrderSortedSign, X be non-empty ManySortedSet of S holds
NonTerminals(DTConOSA(X)) = [:the carrier' of S,{the carrier of S}:] &
Terminals (DTConOSA(X)) = Union (coprod X)
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), A = [:the carrier' of S,{the carrier of S}:] \/ Union (
coprod (X qua ManySortedSet of S));
A1: the carrier of D = (Terminals D) \/ (NonTerminals D) by LANG1:1;
thus
A2: NonTerminals D c= [:the carrier' of S,{the carrier of S}:]
proof
let x be object;
assume x in NonTerminals D;
then
x in { s where s is Symbol of D: ex n being FinSequence st s ==> n} by
LANG1:def 3;
then consider s be Symbol of D such that
A3: s = x and
A4: ex n being FinSequence st s ==> n;
consider n be FinSequence such that
A5: s ==> n by A4;
[s,n] in the Rules of D by A5,LANG1:def 1;
then reconsider n as Element of A* by ZFMISC_1:87;
reconsider s as Element of A;
[s,n] in OSREL X by A5,LANG1:def 1;
hence thesis by A3,Def4;
end;
A6: Union(coprod X) misses [:the carrier' of S,{the carrier of S}:] by
MSAFREE:4;
thus
A7: [:the carrier' of S,{the carrier of S}:] c= NonTerminals D
proof
let x be object;
assume
A8: x in [:the carrier' of S,{the carrier of S}:];
then consider
o being Element of the carrier' of S, x2 being Element of {the
carrier of S} such that
A9: x = [o,x2] by DOMAIN_1:1;
set O = the_arity_of o;
defpred P[object,object] means
ex i being Element of S st i <= O/.$1 & $2 in
coprod(i,X);
A10: for a be object st a in Seg len O ex b be object st P[a,b]
proof
let a be object;
assume a in Seg len O;
then
A11: a in dom O by FINSEQ_1:def 3;
then
A12: O.a in rng O by FUNCT_1:def 3;
A13: rng O c= the carrier of S by FINSEQ_1:def 4;
then consider x be object such that
A14: x in X.(O.a) by A12,XBOOLE_0:def 1;
take y = [x,O.a];
take O/.a;
y in coprod(O.a,X) by A12,A13,A14,MSAFREE:def 2;
hence thesis by A11,PARTFUN1:def 6;
end;
consider b be Function such that
A15: dom b = Seg len O & for a be object st a in Seg len O holds P[a,b.a]
from CLASSES1:sch 1(A10);
reconsider b as FinSequence by A15,FINSEQ_1:def 2;
rng b c= A
proof
let a be object;
assume a in rng b;
then consider c be object such that
A16: c in dom b and
A17: b.c = a by FUNCT_1:def 3;
consider i being Element of S such that
i <= O/.c and
A18: a in coprod(i,X) by A15,A16,A17;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).(i) in rng coprod(X) by FUNCT_1:def 3;
then coprod(i,X) in rng coprod(X) by MSAFREE:def 3;
then a in union rng coprod(X) by A18,TARSKI:def 4;
then a in Union coprod(X) by CARD_3:def 4;
hence thesis by XBOOLE_0:def 3;
end;
then reconsider b as FinSequence of A by FINSEQ_1:def 4;
reconsider b as Element of A* by FINSEQ_1:def 11;
A19: now
let c be set;
assume c in dom b;
then consider i being Element of S such that
A20: i <= O/.c and
A21: b.c in coprod(i,X) by A15;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).(i) in rng coprod(X) by FUNCT_1:def 3;
then coprod(i,X) in rng coprod(X) by MSAFREE:def 3;
then b.c in union rng coprod(X) by A21,TARSKI:def 4;
then b.c in Union coprod(X) by CARD_3:def 4;
hence b.c in [:the carrier' of S,{the carrier of S}:] implies for o1 be
OperSymbol of S st [o1,the carrier of S] = b.c holds the_result_sort_of o1 <= O
/.c by A6,XBOOLE_0:3;
assume b.c in Union (coprod X);
thus ex i being Element of S st i <= O/.c & b.c in coprod(i,X) by A20,A21
;
end;
A22: the carrier of S = x2 by TARSKI:def 1;
then reconsider
xa = [o,the carrier of S] as Element of (the carrier of D) by A8,A9,
XBOOLE_0:def 3;
len b = len O by A15,FINSEQ_1:def 3;
then [xa,b] in OSREL(X) by A19,Th2;
then xa ==> b by LANG1:def 1;
then xa in { t where t is Symbol of D: ex n be FinSequence st t ==> n};
hence thesis by A9,A22,LANG1:def 3;
end;
A23: (Terminals D) misses (NonTerminals D) by DTCONSTR:8;
thus Terminals D c= Union (coprod X)
proof
let x be object;
assume
A24: x in Terminals D;
then
A25: x in A by A1,XBOOLE_0:def 3;
not x in [:the carrier' of S,{the carrier of S}:] by A23,A7,A24,XBOOLE_0:3;
hence thesis by A25,XBOOLE_0:def 3;
end;
let x be object;
assume
A26: x in Union (coprod X);
then x in A by XBOOLE_0:def 3;
then x in Terminals D or x in NonTerminals D by A1,XBOOLE_0:def 3;
hence thesis by A6,A2,A26,XBOOLE_0:3;
end;
reserve x for set;
registration
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
cluster DTConOSA(X) -> with_terminals with_nonterminals
with_useful_nonterminals;
coherence
proof
set D = DTConOSA(X), A = [:the carrier' of S,{the carrier of S}:] \/ Union
(coprod (X qua ManySortedSet of S));
A1: Terminals D = Union (coprod X) by Th3;
A2: NonTerminals D = [:the carrier' of S,{the carrier of S}:] by Th3;
A3: Union (coprod X) misses [:the carrier' of S,{the carrier of S}:] by
MSAFREE:4;
for nt being Symbol of D st nt in NonTerminals D ex p being
FinSequence of TS(D) st nt ==> roots p
proof
let nt be Symbol of D;
assume nt in NonTerminals D;
then consider
o being Element of the carrier' of S, x2 being Element of {the
carrier of S} such that
A4: nt = [o,x2] by A2,DOMAIN_1:1;
set O = the_arity_of o;
A5: the carrier of S = x2 by TARSKI:def 1;
defpred P[object,object] means
ex i being Element of S st i <= O/.$1 & $2 in
coprod(i,X);
A6: for a be object st a in Seg len O ex b be object st P[a,b]
proof
let a be object;
assume a in Seg len O;
then
A7: a in dom O by FINSEQ_1:def 3;
then
A8: O.a in rng O by FUNCT_1:def 3;
A9: rng O c= the carrier of S by FINSEQ_1:def 4;
then consider x be object such that
A10: x in X.(O.a) by A8,XBOOLE_0:def 1;
take y = [x,O.a];
take O/.a;
y in coprod(O.a,X) by A8,A9,A10,MSAFREE:def 2;
hence thesis by A7,PARTFUN1:def 6;
end;
consider b be Function such that
A11: dom b = Seg len O & for a be object st a in Seg len O holds P[a,b.
a] from CLASSES1:sch 1(A6);
reconsider b as FinSequence by A11,FINSEQ_1:def 2;
A12: rng b c= A
proof
let a be object;
assume a in rng b;
then consider c be object such that
A13: c in dom b and
A14: b.c = a by FUNCT_1:def 3;
consider i being Element of S such that
i <= O/.c and
A15: a in coprod(i,X) by A11,A13,A14;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).i in rng coprod(X) by FUNCT_1:def 3;
then coprod(i,X) in rng coprod(X) by MSAFREE:def 3;
then a in union rng coprod(X) by A15,TARSKI:def 4;
then a in Union coprod(X) by CARD_3:def 4;
hence thesis by XBOOLE_0:def 3;
end;
then reconsider b as FinSequence of A by FINSEQ_1:def 4;
reconsider b as Element of A* by FINSEQ_1:def 11;
deffunc F(object) = root-tree (b.$1);
consider f be Function such that
A16: dom f = dom b & for x being object st x in dom b holds f.x = F(x) from
FUNCT_1:sch 3;
reconsider f as FinSequence by A11,A16,FINSEQ_1:def 2;
rng f c= TS(D)
proof
let x be object;
assume x in rng f;
then consider y be object such that
A17: y in dom f and
A18: f.y = x by FUNCT_1:def 3;
b.y in rng b by A16,A17,FUNCT_1:def 3;
then reconsider a = b.y as Symbol of D by A12;
consider i being Element of S such that
i <= O/.y and
A19: b.y in coprod(i,X) by A11,A16,A17;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).(i) in rng coprod(X) by FUNCT_1:def 3;
then coprod(i,X) in rng coprod(X) by MSAFREE:def 3;
then b.y in union rng coprod(X) by A19,TARSKI:def 4;
then
A20: a in Terminals D by A1,CARD_3:def 4;
x = root-tree(b.y) by A16,A17,A18;
hence thesis by A20,DTCONSTR:def 1;
end;
then reconsider f as FinSequence of TS(D) by FINSEQ_1:def 4;
A21: for x being object st x in dom b holds (roots f).x = b.x
proof
let x be object;
assume
A22: x in dom b;
then reconsider i = x as Nat;
A23: ex T be DecoratedTree st T = f.i & (roots f).i = T.{} by A16,A22,
TREES_3:def 18;
f.x = root-tree (b.x) by A16,A22;
hence thesis by A23,TREES_4:3;
end;
A24: now
let c be set;
assume c in dom b;
then consider i being Element of S such that
A25: i <= O/.c and
A26: b.c in coprod(i,X) by A11;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).i in rng coprod(X) by FUNCT_1:def 3;
then coprod(i,X) in rng coprod(X) by MSAFREE:def 3;
then b.c in union rng coprod(X) by A26,TARSKI:def 4;
then b.c in Union coprod(X) by CARD_3:def 4;
hence
b.c in [:the carrier' of S,{the carrier of S}:] implies for o1 be
OperSymbol of S st [o1,the carrier of S] = b.c holds the_result_sort_of o1 <= O
/.c by A3,XBOOLE_0:3;
assume b.c in Union (coprod X);
thus ex i being Element of S st i <= O/.c & b.c in coprod(i,X) by A25
,A26;
end;
len b = len O by A11,FINSEQ_1:def 3;
then [nt,b] in OSREL(X) by A4,A5,A24,Th2;
then
A27: nt ==> b by LANG1:def 1;
take f;
dom (roots f) = dom f by TREES_3:def 18;
hence thesis by A27,A16,A21,FUNCT_1:2;
end;
hence thesis by A1,A2,DTCONSTR:def 3,def 4,def 5;
end;
end;
theorem Th4:
for S be OrderSortedSign, X be non-empty ManySortedSet of S, t be
set holds t in Terminals DTConOSA(X) iff ex s be Element of S, x be set st x in
X.s & t = [x,s]
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, t be set;
set D = DTConOSA(X);
A1: Terminals D = Union (coprod X) by Th3
.= union rng (coprod X) by CARD_3:def 4;
thus t in Terminals D implies ex s be Element of S, x be set st x in X.s & t
= [x,s]
proof
assume t in Terminals D;
then consider A be set such that
A2: t in A and
A3: A in rng(coprod X) by A1,TARSKI:def 4;
consider s be object such that
A4: s in dom (coprod X) and
A5: (coprod X).s = A by A3,FUNCT_1:def 3;
reconsider s as Element of S by A4;
(coprod X).s = coprod(s,X) by MSAFREE:def 3;
then consider x be set such that
A6: x in X.s and
A7: t = [x,s] by A2,A5,MSAFREE:def 2;
take s;
take x;
thus thesis by A6,A7;
end;
given s be Element of S, x be set such that
A8: x in X.s and
A9: t = [x,s];
t in coprod(s,X) by A8,A9,MSAFREE:def 2;
then
A10: t in (coprod X).s by MSAFREE:def 3;
dom(coprod X) = the carrier of S by PARTFUN1:def 2;
then (coprod X).s in rng (coprod X) by FUNCT_1:def 3;
hence thesis by A1,A10,TARSKI:def 4;
end;
:: have to rename
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S;
func OSSym(o,X) ->Symbol of DTConOSA(X) equals
[o,the carrier of S];
coherence
proof
the carrier of S in {the carrier of S} by TARSKI:def 1;
then [o,the carrier of S] in [:the carrier' of S,{the carrier of S}:] by
ZFMISC_1:87;
then [o,the carrier of S] in NonTerminals (DTConOSA X) by Th3;
hence thesis;
end;
end;
:: originally FreeSort, but it is not a good name in order-sorted context
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S, s be Element of
S;
func ParsedTerms(X,s) -> Subset of TS(DTConOSA(X)) equals
{a where a is
Element of TS(DTConOSA(X)):
(ex s1 being Element of S, x be object st s1 <= s & x
in X.s1 & a = root-tree [x,s1]) or ex o be OperSymbol of S st [o,the carrier of
S] = a.{} & the_result_sort_of o <= s};
coherence
proof
set A = {a where a is Element of TS(DTConOSA(X)): (ex s1 being Element of
S, x be object st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or ex o be
OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s};
A c= TS(DTConOSA(X))
proof
let x be object;
assume x in A;
then
ex a be Element of TS(DTConOSA(X)) st x = a &( (ex s1 being Element
of S, x be object st s1 <= s & x in X.s1 & a = root-tree [x,s1])
or ex o be
OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s);
hence thesis;
end;
hence thesis;
end;
end;
registration
let S be OrderSortedSign, X be non-empty ManySortedSet of S, s be Element of
S;
cluster ParsedTerms(X,s) -> non empty;
coherence
proof
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).s in rng coprod(X) by FUNCT_1:def 3;
then
A1: coprod(s,X) in rng coprod(X) by MSAFREE:def 3;
set A = {a where a is Element of TS(DTConOSA(X)): (ex s1 being Element of
S, x be object st s1 <= s & x in X.s1 & a = root-tree [x,s1])
or ex o be
OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s};
consider x be object such that
A2: x in X.s by XBOOLE_0:def 1;
set a = [x,s];
A3: (Terminals (DTConOSA(X))) = Union (coprod X) by Th3;
a in coprod(s,X) by A2,MSAFREE:def 2;
then a in union rng coprod(X) by A1,TARSKI:def 4;
then
A4: a in Terminals (DTConOSA X) by A3,CARD_3:def 4;
then reconsider a as Symbol of DTConOSA(X);
reconsider b = root-tree a as Element of TS(DTConOSA X) by A4,
DTCONSTR:def 1;
b in A by A2;
hence thesis;
end;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
func ParsedTerms(X) -> OrderSortedSet of S means
:Def8:
for s be Element of S holds it.s = ParsedTerms(X,s);
existence
proof
deffunc F(Element of S) = ParsedTerms(X,$1);
consider f be Function such that
A1: dom f = the carrier of S & for d be Element of S holds f.d = F(d)
from FUNCT_1:sch 4;
reconsider f as ManySortedSet of S by A1,PARTFUN1:def 2,RELAT_1:def 18;
f is order-sorted
proof
let s1,s2 be Element of S such that
A2: s1 <= s2;
thus f.s1 c= f.s2
proof
let x1 be object;
assume x1 in f.s1;
then x1 in ParsedTerms(X,s1) by A1;
then consider a being Element of TS(DTConOSA(X)) such that
A3: x1 = a and
A4: (ex s3 being Element of S, x be object st s3 <= s1 & x in X.s3 &
a = root-tree [x,s3]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{}
& the_result_sort_of o <= s1;
(ex s3 being Element of S, x be object st s3 <= s2 & x in X.s3 & a =
root-tree [x,s3]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s2
proof
per cases by A4;
suppose
ex s3 being Element of S, x be object st s3 <= s1 & x in X.s3
& a = root-tree [x,s3];
then consider s3 being Element of S, x be set such that
A5: s3 <= s1 and
A6: x in X.s3 and
A7: a = root-tree [x,s3];
thus thesis by A2,A5,A6,A7,ORDERS_2:3;
end;
suppose
A8: ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s1;
reconsider s21 = s2 as Element of S;
consider o be OperSymbol of S such that
A9: [o,the carrier of S] = a.{} and
A10: the_result_sort_of o <= s1 by A8;
the_result_sort_of o <= s21 by A2,A10,ORDERS_2:3;
hence thesis by A9;
end;
end;
then x1 in ParsedTerms(X,s2) by A3;
hence thesis by A1;
end;
end;
then reconsider f as OrderSortedSet of S;
take f;
thus thesis by A1;
end;
uniqueness
proof
let A,B be OrderSortedSet of S;
assume that
A11: for s be Element of S holds A.s = ParsedTerms(X,s) and
A12: for s be Element of S holds B.s = ParsedTerms(X,s);
for i be object st i in the carrier of S holds A.i = B.i
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as Element of S;
A.s = ParsedTerms(X,s) by A11;
hence thesis by A12;
end;
hence thesis;
end;
end;
registration
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
cluster ParsedTerms(X) -> non-empty;
coherence
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as Element of S;
(ParsedTerms(X)).s = ParsedTerms(X,s) by Def8;
hence thesis;
end;
end;
theorem Th5:
for S be OrderSortedSign, X be non-empty ManySortedSet of S, o be
OperSymbol of S, x be set st x in ((ParsedTerms X)# * (the Arity of S)).o holds
x is FinSequence of TS(DTConOSA(X))
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S, x be set;
set D = DTConOSA(X), ar = the_arity_of o;
A1: (the Arity of S).o = ar by MSUALG_1:def 1;
assume x in ((ParsedTerms X)# * (the Arity of S)).o;
then x in product ((ParsedTerms X) * ar) by A1,MSAFREE:1;
then consider f be Function such that
A2: x = f and
A3: dom f = dom ((ParsedTerms X) * ar) and
A4: for y be object st y in dom ((ParsedTerms X)* ar) holds f.y in ((
ParsedTerms X) * ar).y by CARD_3:def 5;
A5: dom ((ParsedTerms X) * ar) = dom ar by PARTFUN1:def 2;
dom ar = Seg len ar by FINSEQ_1:def 3;
then reconsider f as FinSequence by A3,A5,FINSEQ_1:def 2;
rng f c= TS D
proof
let a be object;
assume a in rng f;
then consider b be object such that
A6: b in dom f and
A7: f.b = a by FUNCT_1:def 3;
A8: a in ((ParsedTerms X) * ar).b by A3,A4,A6,A7;
reconsider b as Nat by A6;
((ParsedTerms X) * ar).b = (ParsedTerms X).(ar.b) by A3,A6,FUNCT_1:12
.= (ParsedTerms X). (ar/.b) by A3,A5,A6,PARTFUN1:def 6
.= ParsedTerms(X,ar/.b) by Def8
.= { s where s is Element of TS D: (ex s1 being Element of S,
x be object
st s1 <= ar/.b & x in X.(s1) & s = root-tree [x,s1]) or ex o1 be OperSymbol of
S st [o1,the carrier of S] = s.{} & the_result_sort_of o1 <= ar/.b};
then ex e be Element of TS D st a = e &( (ex s1 being Element of S,
x be object
st s1 <= ar/.b & x in X.(s1) & e = root-tree [x,s1]) or ex o be OperSymbol
of S st [o,the carrier of S] = e.{} & the_result_sort_of o <= ar/.b) by A8;
hence thesis;
end;
then reconsider f as FinSequence of TS(D) by FINSEQ_1:def 4;
f = x by A2;
hence thesis;
end;
theorem Th6:
for S be OrderSortedSign, X be non-empty ManySortedSet of S, o be
OperSymbol of S, p be FinSequence of TS(DTConOSA(X)) holds p in ((ParsedTerms X
)# * (the Arity of S)).o iff dom p = dom (the_arity_of o) & for n be Nat st n
in dom p holds p.n in ParsedTerms(X,(the_arity_of o)/.n)
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S, p be FinSequence of TS(DTConOSA(X));
set AR = the Arity of S, ar = the_arity_of o;
thus p in ((ParsedTerms X)# * AR).o implies dom p = dom (the_arity_of o) &
for n be Nat st n in dom p holds p.n in ParsedTerms(X,(the_arity_of o)/.n)
proof
A1: AR.o = ar by MSUALG_1:def 1;
assume p in ((ParsedTerms X)# * (the Arity of S)).o;
then
A2: p in product ((ParsedTerms X) * ar) by A1,MSAFREE:1;
then
A3: dom p = dom ((ParsedTerms X) * ar) by CARD_3:9;
hence dom p = dom ar by PARTFUN1:def 2;
A4: dom ((ParsedTerms X) * ar) = dom ar by PARTFUN1:def 2;
let n be Nat;
assume
A5: n in dom p;
then ((ParsedTerms X) * ar).n = (ParsedTerms X).(ar.n) by A3,FUNCT_1:12
.= (ParsedTerms X). (ar/.n) by A3,A4,A5,PARTFUN1:def 6
.= ParsedTerms(X,ar/.n) by Def8;
hence thesis by A2,A3,A5,CARD_3:9;
end;
assume that
A6: dom p = dom (the_arity_of o) and
A7: for n be Nat st n in dom p holds p.n in ParsedTerms(X,(the_arity_of o)/.n);
A8: dom p = dom ((ParsedTerms X) * ar) by A6,PARTFUN1:def 2;
A9: for x be object st x in dom((ParsedTerms X) * ar) holds p.x in ((
ParsedTerms X) * ar).x
proof
let x be object;
assume
A10: x in dom ((ParsedTerms X) * ar);
then reconsider n = x as Nat;
ParsedTerms(X,ar/.n) = (ParsedTerms X). (ar/.n) by Def8
.= (ParsedTerms X).(ar.n) by A6,A8,A10,PARTFUN1:def 6
.= ((ParsedTerms X) * ar).x by A10,FUNCT_1:12;
hence thesis by A7,A8,A10;
end;
AR.o = ar by MSUALG_1:def 1;
then ((ParsedTerms X)# * AR).o = product ((ParsedTerms X) * ar) by MSAFREE:1;
hence thesis by A8,A9,CARD_3:9;
end;
theorem Th7:
for S be OrderSortedSign, X be non-empty ManySortedSet of S, o be
OperSymbol of S, p be FinSequence of TS(DTConOSA(X)) holds OSSym(o,X) ==> roots
p iff p in ((ParsedTerms X)# * (the Arity of S)).o
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S, p be FinSequence of TS(DTConOSA(X));
set D = DTConOSA(X), ar = the_arity_of o;
set r = roots p, OU = [:the carrier' of S,{the carrier of S}:] \/ Union (
coprod X);
A1: dom p = dom r by TREES_3:def 18;
thus OSSym(o,X) ==> roots p implies p in ((ParsedTerms X)# * (the Arity of S
)).o
proof
assume OSSym(o,X) ==> roots p;
then
A2: [[o,the carrier of S],roots p] in OSREL(X) by LANG1:def 1;
then reconsider
r = roots p as Element of ([:the carrier' of S,{the carrier of
S}:] \/ Union (coprod X))* by ZFMISC_1:87;
A3: dom p = dom r by TREES_3:def 18;
A4: for n be Nat st n in dom p holds p.n in ParsedTerms(X,ar/.n)
proof
let n be Nat;
set s = ar/.n;
A5: rng r c= [:the carrier' of S,{the carrier of S}:] \/ Union (coprod
X) by FINSEQ_1:def 4;
A6: rng p c= TS D by FINSEQ_1:def 4;
assume
A7: n in dom p;
then consider T be DecoratedTree such that
A8: T = p.n and
A9: r.n = T.{} by TREES_3:def 18;
p.n in rng p by A7,FUNCT_1:def 3;
then reconsider T as Element of TS(D) by A8,A6;
A10: r.n in rng r by A3,A7,FUNCT_1:def 3;
per cases by A5,A10,XBOOLE_0:def 3;
suppose
A11: r.n in [:the carrier' of S,{the carrier of S}:];
then consider
o1 being Element of the carrier' of S, x2 being Element of {
the carrier of S} such that
A12: r.n = [o1,x2] by DOMAIN_1:1;
A13: x2 = the carrier of S by TARSKI:def 1;
then the_result_sort_of o1 <= ar/.n by A2,A3,A7,A11,A12,Th2;
then ex o be OperSymbol of S st [o,the carrier of S] = T.{} &
the_result_sort_of o <= s by A9,A12,A13;
hence thesis by A8;
end;
suppose
A14: r.n in Union (coprod X);
then reconsider t = r.n as Terminal of D by Th3;
A15: T = root-tree t by A9,DTCONSTR:9;
consider i being Element of S such that
A16: i <= ar/.n and
A17: r.n in coprod(i,X) by A2,A3,A7,A14,Th2;
ex a be set st a in X.i & r.n = [a,i] by A17,MSAFREE:def 2;
hence thesis by A8,A16,A15;
end;
end;
A18: Seg len ar = dom ar by FINSEQ_1:def 3;
A19: dom r = Seg len r by FINSEQ_1:def 3;
len r = len ar by A2,Th2;
hence thesis by A3,A19,A18,A4,Th6;
end;
assume
A20: p in ((ParsedTerms X)# * (the Arity of S)).o;
A21: dom r = Seg len r by FINSEQ_1:def 3;
reconsider r as FinSequence of OU;
reconsider r as Element of OU* by FINSEQ_1:def 11;
A22: Union (coprod X) misses [:the carrier' of S,{the carrier of S}:] by
MSAFREE:4;
A23: for x be set st x in dom r holds (r.x in [:the carrier' of S,{the
carrier of S}:] implies for o1 be OperSymbol of S st [o1,the carrier of S] = r.
x holds the_result_sort_of o1 <= ar/.x) & (r.x in Union (coprod X) implies ex i
being Element of S st i <= ar/.x & r.x in coprod(i,X))
proof
let x be set;
assume
A24: x in dom r;
then reconsider n = x as Nat;
set s = ar/.n;
p.n in ParsedTerms(X,s) by A20,A1,A24,Th6;
then consider a be Element of TS D such that
A25: a = p.n and
A26: (ex s1 being Element of S, x be object st s1 <= s & x in X.s1 & a =
root-tree [x,s1]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s;
A27: ex T be DecoratedTree st T = p.n & r.n = T.{} by A1,A24,TREES_3:def 18;
thus r.x in [:the carrier' of S,{the carrier of S}:] implies for o1 be
OperSymbol of S st [o1,the carrier of S] = r.x holds the_result_sort_of o1 <=
ar/.x
proof
assume
A28: r.x in [:the carrier' of S,{the carrier of S}:];
A29: now
given s1 being Element of S, y be set such that
s1 <= s and
A30: y in X.s1 and
A31: a = root-tree [y,s1];
A32: [y,s1] in coprod(s1,X) by A30,MSAFREE:def 2;
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).s1 in rng coprod(X) by FUNCT_1:def 3;
then
A33: coprod(s1,X) in rng coprod(X) by MSAFREE:def 3;
r.x = [y,s1] by A25,A27,A31,TREES_4:3;
then r.x in union rng coprod(X) by A32,A33,TARSKI:def 4;
then r.x in Union (coprod X) by CARD_3:def 4;
hence contradiction by A22,A28,XBOOLE_0:3;
end;
let o1 be OperSymbol of S;
assume [o1,the carrier of S] = r.x;
hence thesis by A25,A26,A27,A29,XTUPLE_0:1;
end;
assume
A34: r.x in Union (coprod X);
now
given o1 be OperSymbol of S such that
A35: [o1,the carrier of S] = a.{} and
the_result_sort_of o1 <= s;
the carrier of S in {the carrier of S} by TARSKI:def 1;
then [o1,the carrier of S] in [:the carrier' of S,{the carrier of S}:]
by ZFMISC_1:87;
hence contradiction by A22,A25,A27,A34,A35,XBOOLE_0:3;
end;
then consider s1 being Element of S, y be set such that
A36: s1 <= s and
A37: y in X.s1 and
A38: a = root-tree [y,s1] by A26;
take s1;
r.x = [y,s1] by A25,A27,A38,TREES_4:3;
hence thesis by A36,A37,MSAFREE:def 2;
end;
dom p = dom ar by A20,Th6;
then len r = len ar by A1,A21,FINSEQ_1:def 3;
then [[o,the carrier of S],r] in OSREL X by A23,Th2;
hence thesis by LANG1:def 1;
end;
theorem Th8:
for S be OrderSortedSign, X be non-empty ManySortedSet of S holds
union rng (ParsedTerms X) = TS (DTConOSA(X))
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X);
A1: dom (ParsedTerms X) = the carrier of S by PARTFUN1:def 2;
thus union rng (ParsedTerms X) c= TS D
proof
let x be object;
assume x in union rng (ParsedTerms X);
then consider A be set such that
A2: x in A and
A3: A in rng (ParsedTerms X) by TARSKI:def 4;
consider s be object such that
A4: s in dom (ParsedTerms X) and
A5: (ParsedTerms X).s = A by A3,FUNCT_1:def 3;
reconsider s as Element of S by A4;
A = ParsedTerms(X,s) by A5,Def8
.= {a where a is Element of TS(D):
(ex s1 being Element of S, x be object
st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or ex o1 be OperSymbol of S st [
o1,the carrier of S] = a.{} & the_result_sort_of o1 <= s};
then
ex a be Element of TS(D) st a = x &(
(ex s1 being Element of S, x be object
st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or ex o1 be OperSymbol of S
st [o1,the carrier of S]=a.{} & the_result_sort_of o1 <= s) by A2;
hence thesis;
end;
let x be object;
A6: the carrier of D = (Terminals D) \/ (NonTerminals D) by LANG1:1;
assume x in TS D;
then reconsider t = x as Element of TS(D);
A7: rng t c= the carrier of D by RELAT_1:def 19;
A8: NonTerminals D = [:the carrier' of S,{the carrier of S}:] by Th3;
A9: Terminals D = Union (coprod X) by Th3;
{} in dom t by TREES_1:22;
then
A10: t.{} in rng t by FUNCT_1:def 3;
per cases by A7,A10,A6,XBOOLE_0:def 3;
suppose
A11: t.{} in Terminals D;
then reconsider a = t.{} as Terminal of D;
a in union rng(coprod X) by A9,A11,CARD_3:def 4;
then consider A be set such that
A12: a in A and
A13: A in rng(coprod X) by TARSKI:def 4;
consider s be object such that
A14: s in dom coprod X and
A15: (coprod X).s = A by A13,FUNCT_1:def 3;
reconsider s as Element of S by A14;
A = coprod(s,X) by A15,MSAFREE:def 3;
then
A16: ex b be set st b in X.s & a = [b,s] by A12,MSAFREE:def 2;
t = root-tree a by DTCONSTR:9;
then t in ParsedTerms(X,s) by A16;
then
A17: t in (ParsedTerms X).s by Def8;
(ParsedTerms X).s in rng (ParsedTerms X) by A1,FUNCT_1:def 3;
hence thesis by A17,TARSKI:def 4;
end;
suppose
t.{} in NonTerminals D;
then reconsider a = t.{} as NonTerminal of D;
consider o being Element of the carrier' of S, x2 being Element of {the
carrier of S} such that
A18: a = [o,x2] by A8,DOMAIN_1:1;
set rs = the_result_sort_of o;
x2 = the carrier of S by TARSKI:def 1;
then t in ParsedTerms(X,rs) by A18;
then
A19: t in (ParsedTerms X).rs by Def8;
(ParsedTerms X).rs in rng (ParsedTerms X) by A1,FUNCT_1:def 3;
hence thesis by A19,TARSKI:def 4;
end;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S;
func PTDenOp(o,X) -> Function of ((ParsedTerms X)# * (the Arity of S)).o, ((
ParsedTerms X) * (the ResultSort of S)).o means
:Def9:
for p be FinSequence of
TS(DTConOSA(X)) st OSSym(o,X) ==> roots p holds it.p = (OSSym(o,X))-tree p;
existence
proof
set AL = ((ParsedTerms X)# * (the Arity of S)).o, AX = ((ParsedTerms X) *
(the ResultSort of S)).o, D = DTConOSA(X), O = the carrier' of S, rs =
the_result_sort_of o, RS = the ResultSort of S;
defpred P[object,object] means
for p be FinSequence of TS D st p = $1 holds $2 =
(OSSym(o,X))-tree p;
A1: for x be object st x in AL ex y be object st y in AX & P[x,y]
proof
let x be object;
assume
A2: x in AL;
then reconsider p = x as FinSequence of TS(D) by Th5;
OSSym(o,X) ==> roots p by A2,Th7;
then reconsider a = (OSSym(o,X))-tree p as Element of TS D by
DTCONSTR:def 1;
take y = (OSSym(o,X))-tree p;
o in O;
then o in dom ((ParsedTerms X) * RS) by PARTFUN1:def 2;
then
A3: AX =(ParsedTerms X).(RS.o) by FUNCT_1:12
.= (ParsedTerms X).rs by MSUALG_1:def 2
.= ParsedTerms(X,rs) by Def8;
a.{} = OSSym(o,X) by TREES_4:def 4;
hence y in AX by A3;
thus thesis;
end;
consider f be Function such that
A4: dom f = AL & rng f c= AX & for x be object st x in AL holds P[x,f.x]
from FUNCT_1:sch 6(A1);
reconsider g = f as Function of AL,rng f by A4,FUNCT_2:1;
reconsider g as Function of AL,AX by A4,FUNCT_2:2;
take g;
let p be FinSequence of TS D;
assume OSSym(o,X) ==> roots p;
then p in AL by Th7;
hence thesis by A4;
end;
uniqueness
proof
set AL = ((ParsedTerms X)# * (the Arity of S)).o, AX = ((ParsedTerms X) *
(the ResultSort of S)).o, D = DTConOSA(X);
let f,g be Function of AL, AX;
assume that
A5: for p be FinSequence of TS D st OSSym(o,X) ==> roots p holds f.p
= (OSSym(o,X))-tree p and
A6: for p be FinSequence of TS D st OSSym(o,X) ==> roots p holds g.p
= (OSSym(o,X))-tree p;
A7: for x be object st x in AL holds f.x = g.x
proof
let x be object;
assume
A8: x in AL;
then reconsider p = x as FinSequence of TS(D) by Th5;
A9: OSSym(o,X) ==> roots p by A8,Th7;
then f.p = (OSSym(o,X))-tree p by A5;
hence thesis by A6,A9;
end;
A10: dom g = AL by FUNCT_2:def 1;
dom f = AL by FUNCT_2:def 1;
hence thesis by A10,A7,FUNCT_1:2;
end;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
func PTOper(X) -> ManySortedFunction of (ParsedTerms X)# * (the Arity of S),
(ParsedTerms X) * (the ResultSort of S) means
:Def10:
for o be OperSymbol of S holds it.o = PTDenOp(o,X);
existence
proof
defpred P[object,object] means
for o be OperSymbol of S st $1 = o holds $2 =
PTDenOp(o,X);
set Y = the carrier' of S;
A1: for x be object st x in Y ex y be object st P[x,y]
proof
let x be object;
assume x in Y;
then reconsider o = x as OperSymbol of S;
take PTDenOp(o,X);
thus thesis;
end;
consider f be Function such that
A2: dom f = Y & for x be object st x in Y holds P[x,f.x] from CLASSES1:
sch 1( A1);
reconsider f as ManySortedSet of Y by A2,PARTFUN1:def 2,RELAT_1:def 18;
for x be object st x in dom f holds f.x is Function
proof
let x be object;
assume x in dom f;
then reconsider o = x as OperSymbol of S;
f.o = PTDenOp(o,X) by A2;
hence thesis;
end;
then reconsider f as ManySortedFunction of Y by FUNCOP_1:def 6;
for x be object st x in Y holds f.x is Function of ((ParsedTerms X)# * (
the Arity of S)).x, ((ParsedTerms X) * (the ResultSort of S)).x
proof
let x be object;
assume x in Y;
then reconsider o = x as OperSymbol of S;
f.o = PTDenOp(o,X) by A2;
hence thesis;
end;
then reconsider
f as ManySortedFunction of (ParsedTerms X)# * (the Arity of S),
(ParsedTerms X) * (the ResultSort of S) by PBOOLE:def 15;
take f;
let o be OperSymbol of S;
thus thesis by A2;
end;
uniqueness
proof
let A,B be ManySortedFunction of (ParsedTerms X)# * (the Arity of S), (
ParsedTerms X) * (the ResultSort of S);
assume that
A3: for o be OperSymbol of S holds A.o = PTDenOp(o,X) and
A4: for o be OperSymbol of S holds B.o = PTDenOp(o,X);
for i be object st i in the carrier' of S holds A.i = B.i
proof
let i be object;
assume i in the carrier' of S;
then reconsider s = i as OperSymbol of S;
A.s = PTDenOp(s,X) by A3;
hence thesis by A4;
end;
hence thesis;
end;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
func ParsedTermsOSA(X) -> OSAlgebra of S equals
MSAlgebra (# ParsedTerms(X),
PTOper(X) #);
coherence by OSALG_1:17;
end;
registration
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
cluster ParsedTermsOSA(X) -> strict non-empty;
coherence by MSUALG_1:def 3;
end;
definition
let S be OrderSortedSign;
let X be non-empty ManySortedSet of S;
let o be OperSymbol of S;
redefine func OSSym(o, X) -> NonTerminal of DTConOSA X;
coherence
proof
A1: the carrier of S in { the carrier of S } by TARSKI:def 1;
NonTerminals DTConOSA X = [:the carrier' of S,{the carrier of S}:] by Th3;
hence thesis by A1,ZFMISC_1:87;
end;
end;
theorem Th9:
for S being OrderSortedSign, X being non-empty ManySortedSet of S
, s being Element of S holds (the Sorts of ParsedTermsOSA(X)).s = {a where a is
Element of TS(DTConOSA(X)):
(ex s1 being Element of S, x be object st s1 <= s & x
in X.s1 & a = root-tree [x,s1]) or ex o be OperSymbol of S st [o,the carrier of
S] = a.{} & the_result_sort_of o <= s}
proof
let S being OrderSortedSign, X being non-empty ManySortedSet of S, s being
Element of S;
set PTA = ParsedTermsOSA(X);
{a where a is Element of TS(DTConOSA(X)):
(ex s1 being Element of S, x be object
st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or ex o be OperSymbol of
S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s} = ParsedTerms(X,s
)
.= (the Sorts of PTA).s by Def8;
hence thesis;
end;
theorem Th10:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, s,s1 being Element of S, x being set st x in X.s holds root-tree [x,s] is
Element of TS DTConOSA(X) & ( for z being set holds [z,the carrier of S] <> (
root-tree [x,s]).{} ) & ( root-tree [x,s] in (the Sorts of ParsedTermsOSA(X)).
s1 iff s <= s1 )
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, s,s1 be Element
of S, x be set such that
A1: x in X.s;
set PTA = ParsedTermsOSA(X), D = DTConOSA(X);
reconsider t = [x,s] as Terminal of D by A1,Th4;
reconsider s0 = s, s11 = s1 as Element of S;
reconsider SPTA = the Sorts of PTA as OrderSortedSet of S;
root-tree t is Element of TS D;
hence root-tree [x,s] is Element of TS D;
thus
A2: for z being set holds [z,the carrier of S] <> (root-tree [x,s]).{}
proof
let z be set;
assume
A3: [z,the carrier of S] = (root-tree [x,s]).{};
(root-tree [x,s]).{} = [x,s] by TREES_4:3;
then s = the carrier of S by A3,XTUPLE_0:1;
then s in s;
hence contradiction;
end;
hereby
assume root-tree [x,s] in (the Sorts of PTA).s1;
then root-tree [x,s] in {a where a is Element of TS(DTConOSA(X)): (ex s2
being Element of S, x be object
st s2 <= s1 & x in X.s2 & a = root-tree [x,s2]) or
ex o be OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o
<= s1} by Th9;
then consider a being Element of TS D such that
A4: a = root-tree [x,s] and
A5: (ex s2 being Element of S, x be object
st s2 <= s1 & x in X.s2 & a =
root-tree [x,s2]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s1;
consider s2 being Element of S,x1 be set such that
A6: s2 <= s1 and
x1 in X.s2 and
A7: a = root-tree [x1,s2] by A2,A4,A5;
[x1,s2] = [x,s] by A4,A7,TREES_4:4;
hence s <= s1 by A6,XTUPLE_0:1;
end;
assume s <= s1;
then
A8: SPTA.s0 c= SPTA.s11 by OSALG_1:def 16;
root-tree t in {a where a is Element of TS(DTConOSA(X)): (ex s1 being
Element of S, x be object st s1 <= s & x in X.s1 & a = root-tree [x,s1])
or ex o
be OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s}
by A1;
then root-tree [x,s] in SPTA.s0 by Th9;
hence thesis by A8;
end;
theorem Th11:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, t being Element of TS (DTConOSA X), o being OperSymbol of S st t.{} = [o,the
carrier of S] holds (ex p being SubtreeSeq of OSSym(o,X) st t = OSSym(o,X)-tree
p & OSSym(o,X) ==> roots p & p in Args(o,ParsedTermsOSA(X)) & t = Den(o,
ParsedTermsOSA(X)).p ) & ( for s2 being Element of S, x being set holds t <>
root-tree [x,s2] ) & for s1 being Element of S holds t in (the Sorts of
ParsedTermsOSA(X)).s1 iff the_result_sort_of o <= s1
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, t be Element of
TS (DTConOSA X), o be OperSymbol of S such that
A1: t.{} = [o,the carrier of S];
set G = DTConOSA X, PTA = ParsedTermsOSA(X);
consider p being FinSequence of TS G such that
A2: t = OSSym(o,X)-tree p and
A3: OSSym(o,X) ==> roots p by A1,DTCONSTR:10;
reconsider p as SubtreeSeq of OSSym(o,X) by A3,DTCONSTR:def 6;
p in ((ParsedTerms X)# * (the Arity of S)).o by A3,Th7;
then
A4: p in Args(o,ParsedTermsOSA(X)) by MSUALG_1:def 4;
Den(o,PTA).p = ((the Charact of PTA).o).p by MSUALG_1:def 6
.= PTDenOp(o,X).p by Def10
.= t by A2,A3,Def9;
hence
ex p being SubtreeSeq of OSSym(o,X) st t = OSSym(o,X)-tree p & OSSym(o,
X) ==> roots p & p in Args(o,ParsedTermsOSA(X)) & t = Den(o,ParsedTermsOSA(X)).
p by A2,A3,A4;
thus
A5: for s2 being Element of S, x being set holds t <> root-tree [x,s2]
proof
let s2 be Element of S, x be set;
assume t = root-tree [x,s2];
then [x,s2] = [o, the carrier of S] by A1,TREES_4:3;
then s2 = the carrier of S by XTUPLE_0:1;
then s2 in s2;
hence contradiction;
end;
set s = the_result_sort_of o;
let s1 be Element of S;
hereby
assume t in (the Sorts of PTA).s1;
then t in {a where a is Element of TS(DTConOSA(X)): (ex s2 being Element
of S, x be object
st s2 <= s1 & x in X.s2 & a = root-tree [x,s2]) or ex o be
OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s1}
by Th9;
then consider a being Element of TS DTConOSA(X) such that
A6: a = t and
A7: (ex s2 being Element of S, x be object
st s2 <= s1 & x in X.s2 & a =
root-tree [x,s2]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s1;
thus s <= s1 by A1,A5,A6,A7,XTUPLE_0:1;
end;
reconsider s0 = s, s11 = s1 as Element of S;
reconsider SPTA = the Sorts of PTA as OrderSortedSet of S;
assume the_result_sort_of o <= s1;
then
A8: SPTA.s0 c= SPTA.s11 by OSALG_1:def 16;
t in {a where a is Element of TS(DTConOSA(X)): (ex s1 being Element of S
, x be object
st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or ex o be OperSymbol
of S st [o,the carrier of S] = a.{} & the_result_sort_of o <= s} by A1;
then t in SPTA.s by Th9;
hence thesis by A8;
end;
theorem Th12:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, nt being Symbol of DTConOSA(X), ts being FinSequence of TS(DTConOSA(X)) st
nt ==> roots ts holds nt in NonTerminals DTConOSA(X) & nt-tree ts in TS
DTConOSA(X) & ex o being OperSymbol of S st nt = [o,the carrier of S] & ts in
Args(o,ParsedTermsOSA(X)) & nt-tree ts = Den(o,ParsedTermsOSA(X)).ts & for s1
being Element of S holds nt-tree ts in (the Sorts of ParsedTermsOSA(X)).s1 iff
the_result_sort_of o <= s1
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, nt be Symbol of
DTConOSA(X), ts be FinSequence of TS(DTConOSA(X)) such that
A1: nt ==> roots ts;
set D = DTConOSA(X), PTA = ParsedTermsOSA(X);
A2: nt in { s where s is Symbol of D: ex n being FinSequence st s ==> n} by A1;
then reconsider nt1 = nt as NonTerminal of D by LANG1:def 3;
reconsider ts1 = ts as SubtreeSeq of nt1 by A1,DTCONSTR:def 6;
thus nt in NonTerminals D by A2,LANG1:def 3;
then nt in [:the carrier' of S,{the carrier of S}:] by Th3;
then consider o1,b1 being object such that
A3: o1 in the carrier' of S and
A4: b1 in {the carrier of S} and
A5: nt = [o1,b1] by ZFMISC_1:def 2;
nt1-tree ts1 in TS D;
hence nt-tree ts in TS DTConOSA(X);
reconsider o1 as OperSymbol of S by A3;
take o1;
thus nt = [o1,the carrier of S] by A4,A5,TARSKI:def 1;
b1 = the carrier of S by A4,TARSKI:def 1;
then
A6: (nt1-tree ts).{} = [o1,the carrier of S] by A5,TREES_4:def 4;
then ex p being SubtreeSeq of OSSym(o1,X) st (nt1-tree ts1) = OSSym(o1,X)
-tree p & OSSym(o1,X) ==> roots p & p in Args(o1,PTA) & (nt1-tree ts1) = Den
(o1,PTA).p by Th11;
hence thesis by A6,Th11,TREES_4:15;
end;
:: Element of Args is FinSequence (if clusters MSUALG_9)
theorem Th13:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, o be OperSymbol of S, x being FinSequence holds x in Args(o,ParsedTermsOSA(X
)) iff x is FinSequence of TS(DTConOSA(X)) & OSSym(o,X) ==> roots x
proof
let S be OrderSortedSign, X be non-empty ManySortedSet of S, o be OperSymbol
of S, x be FinSequence;
set PTA = ParsedTermsOSA(X);
hereby
assume
A1: x in Args(o,PTA);
then
A2: x in ((the Sorts of PTA)# * the Arity of S).o by MSUALG_1:def 4;
hence x is FinSequence of TS(DTConOSA(X)) by Th5;
x in ((ParsedTerms X)# * (the Arity of S)).o by A1,MSUALG_1:def 4;
then reconsider x1 = x as FinSequence of TS(DTConOSA(X)) by Th5;
OSSym(o,X) ==> roots x1 by A2,Th7;
hence OSSym(o,X) ==> roots x;
end;
assume that
A3: x is FinSequence of TS(DTConOSA(X)) and
A4: OSSym(o,X) ==> roots x;
reconsider x1 = x as FinSequence of TS(DTConOSA(X)) by A3;
x1 in ((ParsedTerms X)# * (the Arity of S)).o by A4,Th7;
hence thesis by MSUALG_1:def 4;
end;
:: this should be done more generally for leastsorted osas (and
:: then remove the LeastSorts func), however, it is better here
:: to have it defined for terms (and not Elements of osa)
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S, t be Element of
TS DTConOSA(X);
func LeastSort t -> SortSymbol of S means
:Def12:
t in (the Sorts of
ParsedTermsOSA(X)).it & for s1 being Element of S st t in (the Sorts of
ParsedTermsOSA(X)).s1 holds it <= s1;
existence
proof
set D = DTConOSA(X);
defpred P[set] means ex s being SortSymbol of S st $1 in (the Sorts of
ParsedTermsOSA(X)).s & for s1 being Element of S st $1 in (the Sorts of
ParsedTermsOSA(X)).s1 holds s <= s1;
A1: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds P[t]
holds P[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A2: nt ==> roots ts and
for t being DecoratedTree of the carrier of D st t in rng ts holds P[t ];
consider o being OperSymbol of S such that
nt = [o,the carrier of S] and
ts in Args(o,ParsedTermsOSA(X)) and
nt-tree ts = Den(o,ParsedTermsOSA(X)).ts and
A3: for s1 being Element of S holds nt-tree ts in (the Sorts of
ParsedTermsOSA(X)).s1 iff the_result_sort_of o <= s1 by A2,Th12;
reconsider s = the_result_sort_of o as SortSymbol of S;
take s;
thus thesis by A3;
end;
A4: for s being Symbol of D st s in Terminals D holds P[root-tree s]
proof
let sy be Symbol of D;
assume sy in Terminals D;
then consider s being Element of S, x being set such that
A5: x in X.s and
A6: sy = [x,s] by Th4;
reconsider s as SortSymbol of S;
take s;
thus thesis by A5,A6,Th10;
end;
for t being DecoratedTree of the carrier of D st t in TS(D) holds P[t]
from DTCONSTR:sch 7(A4,A1);
hence thesis;
end;
uniqueness
proof
let s2,s3 be SortSymbol of S such that
A7: t in (the Sorts of ParsedTermsOSA(X)).s2 and
A8: for s1 being Element of S st t in (the Sorts of ParsedTermsOSA(X))
. s1 holds s2 <= s1 and
A9: t in (the Sorts of ParsedTermsOSA(X)).s3 and
A10: for s1 being Element of S st t in (the Sorts of ParsedTermsOSA(X))
. s1 holds s3 <= s1;
A11: s2 <= s3 by A8,A9;
s3 <= s2 by A7,A10;
hence thesis by A11,ORDERS_2:2;
end;
end;
:: REVISE: the clusters needed to make the def from MSAFREE3 work
:: are too demanding, make it more easily accessible (or include
:: the clusters if it is too hard)
definition
let S be non empty non void ManySortedSign;
let A be non-empty MSAlgebra over S;
mode Element of A is Element of Union the Sorts of A;
end;
theorem Th14:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, x being set holds x is Element of ParsedTermsOSA(X) iff x is Element of TS
DTConOSA(X)
proof
let S being OrderSortedSign, X being non-empty ManySortedSet of S, x being
set;
TS DTConOSA X = union rng (ParsedTerms X) by Th8
.= Union (the Sorts of ParsedTermsOSA(X)) by CARD_3:def 4;
hence thesis;
end;
theorem Th15:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, s be Element of S, x being set st x in (the Sorts of ParsedTermsOSA(X)).s
holds x is Element of TS DTConOSA(X)
proof
let S being OrderSortedSign, X being non-empty ManySortedSet of S, s be
Element of S, x being set such that
A1: x in (the Sorts of ParsedTermsOSA(X)).s;
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA;
s in the carrier of S;
then s in dom SPTA by PARTFUN1:def 2;
then SPTA.s in rng SPTA by FUNCT_1:def 3;
then x in union rng SPTA by A1,TARSKI:def 4;
then reconsider x1=x as Element of Union SPTA by CARD_3:def 4;
x1 is Element of PTA;
hence thesis by Th14;
end;
theorem
for S being OrderSortedSign, X being non-empty ManySortedSet of S, s
being Element of S, x being set st x in X.s for t being Element of TS DTConOSA(
X) st t = root-tree [x,s] holds LeastSort t = s
proof
let S being OrderSortedSign, X being non-empty ManySortedSet of S, s being
Element of S, x being set such that
A1: x in X.s;
reconsider s2 = s as Element of S;
let t being Element of TS DTConOSA(X) such that
A2: t = root-tree [x,s];
A3: for s1 being Element of S st t in (the Sorts of ParsedTermsOSA(X)).s1
holds s2 <= s1 by A1,A2,Th10;
t in (the Sorts of ParsedTermsOSA(X)).s2 by A1,A2,Th10;
hence thesis by A3,Def12;
end;
theorem Th17:
for S being OrderSortedSign, X being non-empty ManySortedSet of
S, o be OperSymbol of S, x being Element of Args(o,ParsedTermsOSA(X)) holds for
t being Element of TS DTConOSA(X) st t = Den(o,ParsedTermsOSA(X)).x holds
LeastSort t = the_result_sort_of o
proof
let S being OrderSortedSign, X being non-empty ManySortedSet of S, o be
OperSymbol of S, x being Element of Args(o,ParsedTermsOSA(X));
reconsider x1 = x as FinSequence of TS(DTConOSA(X)) by Th13;
set PTA = ParsedTermsOSA(X);
let t being Element of TS DTConOSA(X) such that
A1: t = Den(o,ParsedTermsOSA(X)).x;
OSSym(o,X) ==> roots x by Th13;
then consider o1 being OperSymbol of S such that
A2: OSSym(o,X) = [o1,the carrier of S] and
x1 in Args(o1,ParsedTermsOSA(X)) and
A3: OSSym(o,X)-tree x1 = Den(o1,ParsedTermsOSA(X)).x1 and
A4: for s1 being Element of S holds OSSym(o,X)-tree x1 in (the Sorts of
ParsedTermsOSA(X)).s1 iff the_result_sort_of o1 <= s1 by Th12;
A5: o = o1 by A2,XTUPLE_0:1;
then t in (the Sorts of PTA).(the_result_sort_of o) by A1,A3,A4;
hence thesis by A1,A3,A4,A5,Def12;
end;
:: WHY is this necessary??? bug?
registration
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
let o2 be OperSymbol of S;
cluster Args(o2,ParsedTermsOSA(X)) -> non empty;
coherence;
end;
:: REVISE: was probably needed for casting, but try if
:: LeastSort * x does the work and if so, remove this
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, x be FinSequence of TS DTConOSA(X);
func LeastSorts x -> Element of (the carrier of S)* means
:Def13:
dom it =
dom x & for y being Nat st y in dom x holds ex t being Element of TS DTConOSA(X
) st t = x.y & it.y = LeastSort t;
existence
proof
set D = DTConOSA(X);
defpred P[object,object] means
ex t being Element of TS D st t = $1 & LeastSort
t = $2;
A1: rng x c= TS D by FINSEQ_1:def 4;
A2: for x being object st x in TS D
ex y being object st y in the carrier of S & P[x,y]
proof
let x being object;
assume x in TS D;
then reconsider t = x as Element of TS D;
take LeastSort t;
thus LeastSort t in the carrier of S;
take t;
thus thesis;
end;
consider f being Function of TS D,(the carrier of S) such that
A3: for x being object st x in TS D holds P[x,f.x] from FUNCT_2:sch 1(A2);
take f*x;
thus dom (f*x) = dom x by FINSEQ_3:120;
let y being Nat such that
A4: y in dom x;
x.y in rng x by A4,FUNCT_1:3;
then reconsider t1 = x.y as Element of TS D by A1;
take t1;
thus t1 = x.y;
A5: ex t2 being Element of TS D st t2 = t1 & LeastSort t2 = f.t1 by A3;
y in dom (f*x) by A4,FINSEQ_3:120;
hence thesis by A5,FINSEQ_3:120;
end;
uniqueness
proof
set D = DTConOSA(X);
let f1,f2 be Element of (the carrier of S)* such that
A6: dom f1 = dom x and
A7: for y being Nat st y in dom x holds ex t being Element of TS
DTConOSA(X) st t = x.y & f1.y = LeastSort t and
A8: dom f2 = dom x and
A9: for y being Nat st y in dom x holds ex t being Element of TS
DTConOSA(X) st t = x.y & f2.y = LeastSort t;
for k being Nat st k in dom f1 holds f1.k = f2.k
proof
let k be Nat such that
A10: k in dom f1;
A11: ex t2 being Element of TS D st t2 = x.k & f2.k = LeastSort t2 by A6,A9
,A10;
ex t1 being Element of TS D st t1 = x.k & f1.k = LeastSort t1 by A6,A7
,A10;
hence thesis by A11;
end;
hence thesis by A6,A8,FINSEQ_1:13;
end;
end;
:: all these should be generalized to any leastsorted osa
theorem Th18:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, o be OperSymbol of S, x be FinSequence of TS DTConOSA(X)
holds LeastSorts x <= the_arity_of o iff x in Args(o,ParsedTermsOSA(X))
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, o be OperSymbol of S, x be FinSequence of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), D = DTConOSA(X), w = the_arity_of o, LSx =
LeastSorts x;
reconsider SPTA = the Sorts of PTA as OrderSortedSet of S;
A1: dom LSx = dom x by Def13;
hereby
assume
A2: LeastSorts x <= w;
then
A3: len LSx = len w;
then
A4: dom LSx = dom w by FINSEQ_3:29;
A5: for k be Nat st k in dom x holds x.k in (the Sorts of PTA).(w/.k)
proof
let k be Nat such that
A6: k in dom x;
consider t2 being Element of TS DTConOSA(X) such that
A7: t2 = x.k and
A8: LSx.k = LeastSort t2 by A6,Def13;
reconsider wk = (w/.k) as Element of S;
(w/.k) = w.k by A1,A4,A6,PARTFUN1:def 6;
then LeastSort t2 <= wk by A1,A2,A6,A8;
then
A9: SPTA.(LeastSort t2) c= SPTA.wk by OSALG_1:def 16;
t2 in (the Sorts of PTA).(LeastSort t2) by Def12;
hence thesis by A7,A9;
end;
len x = len w by A1,A3,FINSEQ_3:29;
hence x in Args(o,PTA) by A5,MSAFREE2:5;
end;
assume
A10: x in Args(o,PTA);
then
A11: dom x = dom w by MSUALG_6:2;
hence len LSx = len w by A1,FINSEQ_3:29;
let i be set such that
A12: i in dom LSx;
reconsider k = i as Nat by A12;
i in dom w by A11,A12,Def13;
then
A13: x.k in (the Sorts of PTA).(w/.k) by A10,MSUALG_6:2;
i in dom x by A12,Def13;
then
A14: ex t2 being Element of TS D st t2 = x.k & LSx.k = LeastSort t2 by Def13;
let s1,s2 be Element of S such that
A15: s1 = LSx.i and
A16: s2 = w.i;
w/.k = w.k by A1,A11,A12,PARTFUN1:def 6;
hence thesis by A15,A16,A14,A13,Def12;
end;
registration
cluster locally_directed regular for monotone OrderSortedSign;
existence
proof
set S1 = the discrete op-discrete OrderSortedSign;
take S1;
thus thesis;
end;
end;
:: just casting funcs necessary for the usage of schemes
definition
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, o be OperSymbol of S, x be FinSequence of TS DTConOSA(X);
assume
A1: OSSym(LBound(o,LeastSorts x),X) ==> roots x;
func pi(o,x) -> Element of TS DTConOSA(X) equals
:Def14:
OSSym(LBound(o,
LeastSorts x),X)-tree x;
correctness by A1,Th12;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, t be Symbol of DTConOSA(X);
assume
A1: ex p be FinSequence st t ==> p;
func @(X,t) -> OperSymbol of S means
:Def15:
[it,the carrier of S] = t;
existence
proof
set D = DTConOSA(X), OU = [:the carrier' of S,{the carrier of S}:] \/
Union (coprod (X qua ManySortedSet of S));
reconsider a = t as Element of OU;
consider p be FinSequence such that
A2: t ==> p by A1;
[t,p] in the Rules of D by A2,LANG1:def 1;
then reconsider p as Element of OU* by ZFMISC_1:87;
[a,p] in OSREL(X) by A2,LANG1:def 1;
then a in [:the carrier' of S,{the carrier of S}:] by Def4;
then consider
o being Element of the carrier' of S, x2 being Element of {the
carrier of S} such that
A3: a = [o,x2] by DOMAIN_1:1;
take o;
thus thesis by A3,TARSKI:def 1;
end;
uniqueness by XTUPLE_0:1;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
let t be Symbol of DTConOSA(X);
assume
A1: t in Terminals DTConOSA(X);
func pi t -> Element of TS(DTConOSA(X)) equals
:Def16:
root-tree t;
correctness by A1,DTCONSTR:def 1;
end;
:: the least monotone OSCongruence
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func LCongruence X -> monotone OSCongruence of ParsedTermsOSA(X) means
:
Def17: for R be monotone OSCongruence of ParsedTermsOSA(X) holds it c= R;
existence
proof
set PTA = ParsedTermsOSA(X), D = DTConOSA(X), SPTA=the Sorts of PTA;
defpred MC[set,set,set] means for R being monotone OSCongruence of PTA
holds [$1,$2] in R.$3;
deffunc F(object) =
{[x,y] where x,y is Element of TS D: x in SPTA.$1 & y in
SPTA.$1 & for R being monotone OSCongruence of PTA holds [x,y] in R.$1};
consider f being ManySortedSet of the carrier of S such that
A1: for i being object st i in the carrier of S holds f.i = F(i) from
PBOOLE:sch 4;
A2: for i be set st i in the carrier of S holds f.i is
Equivalence_Relation of SPTA.i
proof
let i be set such that
A3: i in the carrier of S;
reconsider s = i as Element of S by A3;
A4: f.i = {[x,y] where x,y is Element of TS D: x in SPTA.i & y in SPTA.i
& for R being monotone OSCongruence of PTA holds [x,y] in R.i} by A1,A3;
now
let z be object;
assume z in f.i;
then
ex x,y being Element of TS D st z = [x,y] & x in SPTA.i & y in
SPTA.i & MC[x,y,i] by A4;
hence z in [:SPTA.i,SPTA.i:] by ZFMISC_1:87;
end;
then reconsider fi = f.i as Relation of SPTA.i by TARSKI:def 3;
now
let x,y,z be object such that
A5: x in SPTA.s and
A6: y in SPTA.s and
A7: z in SPTA.s and
A8: [x,y] in fi and
A9: [y,z] in fi;
thus [x,z] in fi
proof
reconsider t1=x,t2=y,t3=z as Element of TS D by A5,A6,A7,Th15;
A10: ex t6,t7 being Element of TS D st [t2,t3] = [t6,t7] & t6 in
SPTA.i & t7 in SPTA.i & MC[t6,t7,i] by A4,A9;
A11: ex t4,t5 being Element of TS D st [t1,t2] = [t4,t5] & t4 in
SPTA.i & t5 in SPTA.i & MC[t4,t5,i] by A4,A8;
now
let R be monotone OSCongruence of PTA;
A12: [t2,t3] in R.s by A10;
field(R.s) = SPTA.s by ORDERS_1:12;
then
A13: R.s is_transitive_in SPTA.s by RELAT_2:def 16;
[t1,t2] in R.s by A11;
hence [t1,t3] in R.s by A5,A6,A7,A12,A13,RELAT_2:def 8;
end;
hence thesis by A4,A5,A7;
end;
end;
then
A14: fi is_transitive_in SPTA.s by RELAT_2:def 8;
now
let x,y be object such that
A15: x in SPTA.s and
A16: y in SPTA.s and
A17: [x,y] in fi;
thus [y,x] in fi
proof
reconsider t1=x,t2=y as Element of TS D by A15,A16,Th15;
A18: ex t3,t4 being Element of TS D st [t1,t2] = [t3,t4] & t3 in
SPTA.i & t4 in SPTA.i & MC[t3,t4,i] by A4,A17;
now
let R be monotone OSCongruence of PTA;
field(R.s) = SPTA.s by ORDERS_1:12;
then
A19: R.s is_symmetric_in SPTA.s by RELAT_2:def 11;
[t1,t2] in R.s by A18;
hence [t2,t1] in R.s by A15,A16,A19,RELAT_2:def 3;
end;
hence thesis by A4,A15,A16;
end;
end;
then
A20: fi is_symmetric_in SPTA.s by RELAT_2:def 3;
now
let x be object such that
A21: x in SPTA.s;
thus [x,x] in fi
proof
reconsider t1 = x as Element of TS D by A21,Th15;
now
let R be monotone OSCongruence of PTA;
field(R.s) = SPTA.s by ORDERS_1:12;
then R.s is_reflexive_in SPTA.s by RELAT_2:def 9;
hence [t1,t1] in R.s by A21,RELAT_2:def 1;
end;
hence thesis by A4,A21;
end;
end;
then
A22: fi is_reflexive_in SPTA.s by RELAT_2:def 1;
then
A23: field fi = SPTA.s by ORDERS_1:13;
dom fi = SPTA.s by A22,ORDERS_1:13;
hence thesis by A23,A20,A14,PARTFUN1:def 2,RELAT_2:def 11,def 16;
end;
then
for i be set st i in the carrier of S holds f.i is Relation of SPTA.i
,SPTA.i;
then reconsider f as ManySortedRelation of the Sorts of PTA by
MSUALG_4:def 1;
reconsider f as ManySortedRelation of PTA;
for i be set, R be Relation of SPTA.i st i in the carrier of S & f.i
= R holds R is Equivalence_Relation of SPTA.i by A2;
then f is MSEquivalence_Relation-like by MSUALG_4:def 2;
then reconsider f as MSEquivalence-like ManySortedRelation of PTA by
MSUALG_4:def 3;
f is os-compatible
proof
let s1,s2 being Element of S such that
A24: s1 <= s2;
A25: f.s1 = {[x,y] where x,y is Element of TS D: x in SPTA.s1 & y in
SPTA.s1 & MC[x,y,s1]} by A1;
A26: f.s2 = {[x,y] where x,y is Element of TS D: x in SPTA.s2 & y in
SPTA.s2 & MC[x,y,s2]} by A1;
let x,y being set such that
A27: x in SPTA.s1 and
A28: y in SPTA.s1;
hereby
assume [x,y] in f.s1;
then consider t1,t2 being Element of TS D such that
A29: [x,y]=[t1,t2] and
A30: t1 in SPTA.s1 and
A31: t2 in SPTA.s1 and
A32: MC[t1,t2,s1] by A25;
now
let R be monotone OSCongruence of PTA;
A33: R is os-compatible by OSALG_4:def 2;
[t1,t2] in R.s1 by A32;
then [t1,t2] in R.s2 by A24,A30,A31,A33;
hence t1 in SPTA.s2 & t2 in SPTA.s2 & [t1,t2] in R.s2 by ZFMISC_1:87;
end;
hence [x,y] in f.s2 by A26,A29;
end;
assume [x,y] in f.s2;
then consider t1,t2 being Element of TS D such that
A34: [x,y]=[t1,t2] and
t1 in SPTA.s2 and
t2 in SPTA.s2 and
A35: MC[t1,t2,s2] by A26;
A36: y = t2 by A34,XTUPLE_0:1;
A37: now
let R be monotone OSCongruence of PTA;
A38: R is os-compatible by OSALG_4:def 2;
[t1,t2] in R.s2 by A35;
hence [t1,t2] in R.s1 by A24,A27,A28,A34,A38;
end;
x = t1 by A34,XTUPLE_0:1;
hence [x,y] in f.s1 by A25,A27,A28,A36,A37;
end;
then reconsider f as MSEquivalence-like OrderSortedRelation of PTA by
OSALG_4:def 2;
f is monotone
proof
let o1,o2 being OperSymbol of S such that
A39: o1 <= o2;
set w2 = the_arity_of o2, rs2 = the_result_sort_of o2;
let x1 being Element of Args(o1,PTA), x2 being Element of Args(o2,PTA)
such that
A40: for y being Nat st y in dom x1 holds [x1.y,x2.y] in f.(w2/.y);
set D1 = Den(o1,PTA).x1, D2 = Den(o2,PTA).x2;
A41: now
let R be monotone OSCongruence of PTA;
A42: now
let y being Nat;
assume y in dom x1;
then
A43: [x1.y,x2.y] in f.(w2/.y) by A40;
f.(w2/.y) = {[x,z] where x,z is Element of TS D: x in SPTA.(w2
/.y) & z in SPTA.(w2/.y) & MC[x,z,w2/.y]} by A1;
then ex x,z being Element of TS D st [x1.y,x2.y] = [x,z] & x in
SPTA.(w2/.y) & z in SPTA.(w2/.y) & MC[x,z,w2/.y] by A43;
hence [x1.y,x2.y] in R.(w2/.y);
end;
then
A44: [D1,D2] in R.rs2 by A39,OSALG_4:def 26;
then
A45: D2 in SPTA.rs2 by ZFMISC_1:87;
D1 in SPTA.rs2 by A44,ZFMISC_1:87;
hence D1 in SPTA.rs2 & D2 in SPTA.rs2 & [D1,D2] in R.rs2 & D1 is
Element of TS D & D2 is Element of TS D by A39,A42,A45,Th15,OSALG_4:def 26;
end;
f.rs2 = {[x,y] where x,y is Element of TS D: x in SPTA.rs2 & y in
SPTA.rs2 & MC[x,y,rs2]} by A1;
hence thesis by A41;
end;
then reconsider
f as monotone MSEquivalence-like OrderSortedRelation of PTA;
take f;
let R be monotone OSCongruence of PTA;
let i be object;
assume i in the carrier of S;
then reconsider s = i as Element of S;
A46: f.s = {[x,y] where x,y is Element of TS D: x in SPTA.s & y in SPTA.s
& MC[x,y,s]} by A1;
let z be object;
assume z in f.i;
then ex x,y being Element of TS D st z = [x,y] & x in SPTA.s & y in
SPTA.s & MC[x,y,s] by A46;
hence thesis;
end;
uniqueness
proof
set PTA = ParsedTermsOSA(X);
let L1,L2 be monotone OSCongruence of PTA such that
A47: for R be monotone OSCongruence of ParsedTermsOSA(X) holds L1 c= R and
A48: for R be monotone OSCongruence of ParsedTermsOSA(X) holds L2 c= R;
A49: L2 c= L1 by A48;
L1 c= L2 by A47;
hence thesis by A49,PBOOLE:146;
end;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func FreeOSA(X) -> strict non-empty monotone OSAlgebra of S equals
QuotOSAlg
(ParsedTermsOSA(X),LCongruence(X));
correctness;
end;
:: now we need an explicit description of a sufficiently small
:: monotone OSCongruence on PTA; the PTCongruence turns out to
:: be LCongruence on regular signatures, and is also used to describe
:: minimal terms there
:: just casting funcs necessary for the usage of schemes,
:: remove when Frankel behaves better
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
let t be Symbol of DTConOSA(X);
func @ t -> Subset of [:TS(DTConOSA(X)), the carrier of S:] equals
{[
root-tree t,s1] where s1 is Element of S: ex s be Element of S, x be set st x
in X.s & t = [x,s] & s <= s1};
correctness
proof
set RT = {[root-tree t,s1] where s1 is Element of S: ex s be Element of S,
x be set st x in X.s & t = [x,s] & s <= s1};
RT c= [:TS(DTConOSA(X)), the carrier of S:]
proof
let y be object;
assume y in RT;
then consider s1 being Element of S such that
A1: y = [root-tree t,s1] and
A2: ex s be Element of S, x be set st x in X.s & t = [x,s] & s <= s1;
consider s being Element of S, x be set such that
A3: x in X.s and
A4: t = [x,s] and
s <= s1 by A2;
root-tree [x,s] is Element of TS DTConOSA(X) by A3,Th10;
hence thesis by A1,A4,ZFMISC_1:def 2;
end;
hence thesis;
end;
end;
definition
let S be OrderSortedSign, X be non-empty ManySortedSet of S;
let nt be Symbol of DTConOSA(X), x be FinSequence of bool [:TS(DTConOSA(X)),
the carrier of S:];
func @ (nt,x) -> Subset of [:TS(DTConOSA(X)), the carrier of S:] equals
{[
Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2 is Element of
Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being OperSymbol of S
st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1 = len
the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <= s3) &
ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y being Nat
st y in dom x holds [x2.y,w3/.y] in x.y };
correctness
proof
set NT = {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S,
x2 is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3) & ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y };
NT c= [:TS(DTConOSA(X)), the carrier of S:]
proof
let y be object;
assume y in NT;
then consider o2 being OperSymbol of S, x2 being Element of Args(o2,
ParsedTermsOSA(X)), s3 being Element of S such that
A1: y = [Den(o2,ParsedTermsOSA(X)).x2,s3] and
ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2
& len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3 &
the_result_sort_of o2 <= s3 and
ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y;
A2: OSSym(o2,X) ==> roots x2 by Th13;
A3: x2 is FinSequence of TS(DTConOSA(X)) by Th13;
then
A4: OSSym(o2,X)-tree x2 in TS DTConOSA(X) by A2,Th12;
consider o being OperSymbol of S such that
A5: OSSym(o2,X) = [o,the carrier of S] and
x2 in Args(o,ParsedTermsOSA(X)) and
A6: OSSym(o2,X)-tree x2 = Den(o,ParsedTermsOSA(X)).x2 and
for s1 being Element of S holds OSSym(o2,X)-tree x2 in (the Sorts of
ParsedTermsOSA(X)).s1 iff the_result_sort_of o <= s1 by A3,A2,Th12;
o2 = o by A5,XTUPLE_0:1;
hence thesis by A1,A4,A6,ZFMISC_1:def 2;
end;
hence thesis;
end;
end;
:: a bit technical, to create the PTCongruence
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func PTClasses X -> Function of TS(DTConOSA(X)), bool [:TS(DTConOSA(X)), the
carrier of S:] means
:Def21:
(for t being Symbol of DTConOSA(X) st t in
Terminals DTConOSA(X) holds it.(root-tree t) = @(t) ) & for nt being Symbol of
DTConOSA(X), ts being FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds
it.(nt-tree ts) = @(nt,it * ts);
existence
proof
set G = DTConOSA(X), D = bool [:TS(DTConOSA(X)), the carrier of S:];
deffunc TermVal(Symbol of G) = @ $1;
deffunc NTermVal(Symbol of G,set,FinSequence of D) = @($1,$3);
thus ex f being Function of TS(G), D st (for t being Symbol of G st t in
Terminals G holds f.(root-tree t) = TermVal(t)) & for nt being Symbol of G, ts
being FinSequence of TS(G) st nt ==> roots ts holds f.(nt-tree ts) = NTermVal(
nt, roots ts, f*ts) from DTCONSTR:sch 8;
end;
uniqueness
proof
set G = DTConOSA(X), D = bool [:TS(DTConOSA(X)), the carrier of S:];
deffunc TermVal(Symbol of G) = @ $1;
deffunc NTermVal(Symbol of G,set,FinSequence of D) = @($1,$3);
let f1,f2 be Function of TS(DTConOSA(X)), bool [:TS(DTConOSA(X)), the
carrier of S:] such that
A1: (for t being Symbol of DTConOSA(X) st t in Terminals DTConOSA(X)
holds f1.(root-tree t) = TermVal(t) ) & for nt being Symbol of DTConOSA(X), ts
being FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds f1.(nt-tree ts) =
NTermVal(nt, roots ts, f1*ts) and
A2: (for t being Symbol of DTConOSA(X) st t in Terminals DTConOSA(X)
holds f2.(root-tree t) = TermVal(t) ) & for nt being Symbol of DTConOSA(X), ts
being FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds f2.(nt-tree ts) =
NTermVal(nt, roots ts, f2 * ts);
thus f1 = f2 from DTCONSTR:sch 9(A1,A2);
end;
end;
theorem Th19:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, t being Element of TS DTConOSA(X) holds ( for s being
Element of S holds t in (the Sorts of ParsedTermsOSA(X)).s iff [t,s] in (
PTClasses X).t ) & for s being Element of S, y being Element of TS(DTConOSA X)
holds [y,s] in (PTClasses X).t implies [t,s] in (PTClasses X).y
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, t be Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D = DTConOSA(X), C =
bool [:TS(D), the carrier of S:], F = PTClasses X;
defpred R1[set] means for s being Element of S holds $1 in SPTA.s iff [$1,s]
in F.$1;
defpred R2[set] means for s being Element of S, y being Element of TS(D)
holds [y,s] in F.$1 implies [$1,s] in F.y;
defpred P[DecoratedTree of the carrier of D] means R1[$1] & R2[$1];
A1: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds P[t]
holds P[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A2: nt ==> roots ts and
A3: for t being DecoratedTree of the carrier of D st t in rng ts
holds R1[t] & R2[t];
consider o being OperSymbol of S such that
A4: nt = [o,the carrier of S] and
A5: ts in Args(o,PTA) and
A6: nt-tree ts = Den(o,PTA).ts and
A7: for s1 being Element of S holds nt-tree ts in (the Sorts of PTA).
s1 iff the_result_sort_of o <= s1 by A2,Th12;
reconsider x = F * ts as FinSequence of C;
A8: F.(nt-tree ts) = @(nt,x) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y};
reconsider ts1 = ts as Element of Args(o,PTA) by A5;
set w = the_arity_of o;
A9: rng ts c= TS D by FINSEQ_1:def 4;
dom F = TS D by FUNCT_2:def 1;
then len x = len ts by A9,FINSEQ_2:29;
then
A10: dom x = dom ts by FINSEQ_3:29;
A11: dom w = dom ts by A5,MSUALG_3:6;
A12: for y being Nat st y in dom x holds [ts1.y,w/.y] in x.y
proof
let y being Nat such that
A13: y in dom x;
A14: ts1.y in rng ts1 by A10,A13,FUNCT_1:3;
then reconsider t1 = ts1.y as Element of TS D by A9;
ts1.y in SPTA.(w/.y) by A10,A11,A13,MSUALG_6:2;
then [t1,w/.y] in F.t1 by A3,A14;
hence thesis by A10,A13,FUNCT_1:13;
end;
thus R1[nt-tree ts]
proof
let s1 be Element of S;
hereby
assume nt-tree ts in SPTA.s1;
then
A15: the_result_sort_of o <= s1 by A7;
len the_arity_of o = len the_arity_of o;
hence [nt-tree ts,s1] in F.(nt-tree ts) by A4,A6,A10,A11,A12,A8,A15;
end;
assume [nt-tree ts,s1] in F.(nt-tree ts);
then consider
o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A16: [nt-tree ts,s1] = [Den(o2,PTA).x2,s3] and
A17: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1
~= o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3
& the_result_sort_of o2 <= s3 and
ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A8;
s1 = s3 by A16,XTUPLE_0:1;
then
A18: SPTA.(the_result_sort_of o2) c= SPTA.s1 by A17,OSALG_1:def 16;
A19: Den(o2,PTA).x2 in SPTA.(the_result_sort_of o2) by MSUALG_9:18;
nt-tree ts = Den(o2,PTA).x2 by A16,XTUPLE_0:1;
hence thesis by A19,A18;
end;
thus R2[nt-tree ts]
proof
let s1 be Element of S, y be Element of TS(D);
assume [y,s1] in F.(nt-tree ts);
then consider
o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A20: [y,s1] = [Den(o2,PTA).x2,s3] and
A21: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1
~= o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3
& the_result_sort_of o2 <= s3 and
A22: ex w3 being Element of (the carrier of S)* st dom w3 = dom x &
for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A8;
consider w3 being Element of (the carrier of S)* such that
A23: dom w3 = dom x and
A24: for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A22;
consider o1 being OperSymbol of S such that
A25: nt = [o1,the carrier of S] and
A26: o1 ~= o2 and
A27: len the_arity_of o1 = len the_arity_of o2 and
A28: the_result_sort_of o1 <= s3 and
A29: the_result_sort_of o2 <= s3 by A21;
A30: y = Den(o2,PTA).x2 by A20,XTUPLE_0:1;
reconsider x3 = x2 as FinSequence of TS D by Th13;
reconsider xy = F * x3 as FinSequence of C;
A31: OSSym(o2,X) ==> roots x2 by Th13;
then consider o3 being OperSymbol of S such that
A32: OSSym(o2,X) = [o3,the carrier of S] and
x3 in Args(o3,PTA) and
A33: OSSym(o2,X)-tree x3 = Den(o3,PTA).x3 and
for s2 being Element of S holds OSSym(o2,X)-tree x3 in (the Sorts of
PTA).s2 iff the_result_sort_of o3 <= s2 by Th12;
o2 = o3 by A32,XTUPLE_0:1;
then
A34: F.y = @(OSSym(o2,X),xy) by A30,A31,A33,Def21
.= {[Den(o4,PTA).x4,s4] where o4 is OperSymbol of S, x4 is Element
of Args(o4,PTA), s4 is Element of S : ( ex o1 being OperSymbol of S st OSSym(o2
,X) = [o1,the carrier of S] & o1 ~= o4 & len the_arity_of o1 = len the_arity_of
o4 & the_result_sort_of o1 <= s4 & the_result_sort_of o4 <= s4 ) & ex w4 being
Element of (the carrier of S)* st dom w4 = dom xy & for y being Nat st y in dom
xy holds [x4.y,w4/.y] in xy.y};
A35: rng x3 c= TS D by FINSEQ_1:def 4;
then rng x3 c= dom F by FUNCT_2:def 1;
then len xy = len x3 by FINSEQ_2:29;
then
A36: dom x3 = dom xy by FINSEQ_3:29;
A37: o1 = o by A4,A25,XTUPLE_0:1;
then
A38: dom the_arity_of o2 = dom the_arity_of o by A27,FINSEQ_3:29;
then
A39: dom w3 = dom xy by A10,A11,A23,A36,MSUALG_3:6;
A40: dom x2 = dom x by A10,A11,A38,MSUALG_3:6;
A41: for y being Nat st y in dom xy holds [ts1.y,w3/.y] in xy.y
proof
let y be Nat such that
A42: y in dom xy;
A43: ts1.y in rng ts1 by A10,A23,A39,A42,FUNCT_1:3;
x2.y in rng x3 by A36,A42,FUNCT_1:3;
then reconsider t1 = ts1.y,t2 = x2.y as Element of TS D by A9,A35,A43;
[x2.y,w3/.y] in x.y by A24,A36,A40,A42;
then [x2.y,w3/.y] in F.(ts1.y) by A10,A23,A39,A42,FUNCT_1:13;
then [t1,w3/.y] in F.(t2) by A3,A43;
hence thesis by A42,FUNCT_1:12;
end;
A44: the_result_sort_of o2 <= s1 by A20,A29,XTUPLE_0:1;
the_result_sort_of o <= s1 by A20,A28,A37,XTUPLE_0:1;
hence thesis by A6,A26,A27,A37,A39,A41,A34,A44;
end;
end;
A45: for s being Symbol of D st s in Terminals D holds P[root-tree s]
proof
let sy be Symbol of D such that
A46: sy in Terminals D;
reconsider sy1 = sy as Terminal of D by A46;
consider s being Element of S, x being set such that
A47: x in X.s and
A48: sy = [x,s] by A46,Th4;
A49: F.(root-tree sy) = @(sy) by A46,Def21
.= {[root-tree sy,s1] where s1 is Element of S: ex s2 be Element of S,
x be set st x in X.s2 & sy = [x,s2] & s2 <= s1};
root-tree sy1 in {a where a is Element of TS(DTConOSA(X)): (ex s1
being Element of S, x be object
st s1 <= s & x in X.s1 & a = root-tree [x,s1]) or
ex o be OperSymbol of S st [o,the carrier of S] = a.{} & the_result_sort_of o
<= s} by A47,A48;
then
A50: root-tree sy1 in SPTA.s by Th9;
thus R1[root-tree sy]
proof
let s1 be Element of S;
hereby
assume root-tree sy in SPTA.s1;
then s <= s1 by A47,A48,Th10;
hence [root-tree sy,s1] in F.(root-tree sy) by A47,A48,A49;
end;
assume [root-tree sy,s1] in F.(root-tree sy);
then consider s3 being Element of S such that
A51: [root-tree sy,s1] = [root-tree sy,s3] and
A52: ex s2 be Element of S, x be set st x in X.s2 & sy = [x,s2] & s2
<= s3 by A49;
A53: s1 = s3 by A51,XTUPLE_0:1;
consider s2 be Element of S, x2 be set such that
x2 in X.s2 and
A54: sy = [x2,s2] and
A55: s2 <= s3 by A52;
s2 = s by A48,A54,XTUPLE_0:1;
then SPTA.s c= SPTA.s1 by A53,A55,OSALG_1:def 16;
hence thesis by A50;
end;
thus R2[root-tree sy]
proof
let s1 be Element of S, y be Element of TS(D);
assume
A56: [y,s1] in F.(root-tree sy);
then
ex s2 being Element of S st [y,s1] = [root-tree sy,s2] & ex s3 be
Element of S, x be set st x in X.s3 & sy = [x,s3] & s3 <= s2 by A49;
then y = root-tree sy by XTUPLE_0:1;
hence thesis by A56;
end;
end;
for t being DecoratedTree of the carrier of D st t in TS(D) holds P[t]
from DTCONSTR:sch 7(A45,A1);
hence thesis;
end;
:: switched to have easier prooving
theorem Th20:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, t being Element of TS DTConOSA(X), s being Element of S
holds ( ex y being Element of TS(DTConOSA X) st [y,s] in (PTClasses X).t )
implies [t,s] in (PTClasses X).t
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), C = bool [:TS(D), the carrier
of S:], SPTA = the Sorts of PTA, F = PTClasses X;
defpred R3[set] means for s being Element of S holds ( ex y being Element of
TS(DTConOSA X) st [y,s] in (PTClasses X).$1 ) implies [$1,s] in (PTClasses X).
$1;
A1: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds R3[t]
holds R3[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A2: nt ==> roots ts and
for t being DecoratedTree of the carrier of D st t in rng ts holds R3[ t];
consider o being OperSymbol of S such that
A3: nt = [o,the carrier of S] and
A4: ts in Args(o,PTA) and
A5: nt-tree ts = Den(o,PTA).ts and
for s1 being Element of S holds nt-tree ts in (the Sorts of PTA).s1
iff the_result_sort_of o <= s1 by A2,Th12;
reconsider x = F * ts as FinSequence of C;
A6: F.(nt-tree ts) = @(nt,x) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y};
reconsider ts1 = ts as Element of Args(o,PTA) by A4;
set w = the_arity_of o;
A7: len the_arity_of o = len the_arity_of o;
let s1 be Element of S;
A8: rng ts c= TS D by FINSEQ_1:def 4;
dom F = TS D by FUNCT_2:def 1;
then len x = len ts by A8,FINSEQ_2:29;
then
A9: dom x = dom ts by FINSEQ_3:29;
A10: dom w = dom ts by A4,MSUALG_3:6;
A11: for y being Nat st y in dom x holds [ts1.y,w/.y] in x.y
proof
let y being Nat such that
A12: y in dom x;
ts1.y in rng ts1 by A9,A12,FUNCT_1:3;
then reconsider t1 = ts1.y as Element of TS D by A8;
ts1.y in SPTA.(w/.y) by A9,A10,A12,MSUALG_6:2;
then [t1,w/.y] in F.t1 by Th19;
hence thesis by A9,A12,FUNCT_1:13;
end;
assume ex y being Element of TS(DTConOSA X) st [y,s1] in F.(nt-tree ts);
then consider y being Element of TS(DTConOSA X) such that
A13: [y,s1] in F.(nt-tree ts);
consider o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A14: [y,s1] = [Den(o2,PTA).x2,s3] and
A15: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1 ~=
o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3 &
the_result_sort_of o2 <= s3 and
ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A6,A13;
A16: s1 = s3 by A14,XTUPLE_0:1;
the_result_sort_of o <= s3 by A3,A15,XTUPLE_0:1;
hence thesis by A3,A5,A9,A10,A11,A6,A16,A7;
end;
A17: for s being Symbol of D st s in Terminals D holds R3[root-tree s]
proof
let sy be Symbol of D;
assume sy in Terminals D;
then
A18: F.(root-tree sy) = @(sy) by Def21
.= {[root-tree sy,s1] where s1 is Element of S: ex s2 be Element of S,
x be set st x in X.s2 & sy = [x,s2] & s2 <= s1};
let s1 be Element of S;
assume ex y being Element of TS(DTConOSA X) st [y,s1] in F.(root-tree sy);
then consider y being Element of TS(DTConOSA X) such that
A19: [y,s1] in F.(root-tree sy);
ex s3 being Element of S st [y,s1] = [root-tree sy,s3] & ex s2 be
Element of S, x be set st x in X.s2 & sy = [x,s2] & s2 <= s3 by A18,A19;
hence thesis by A19,XTUPLE_0:1;
end;
for t being DecoratedTree of the carrier of D st t in TS(D) holds R3[t]
from DTCONSTR:sch 7(A17,A1);
hence thesis;
end;
theorem Th21:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, x,y being Element of TS DTConOSA(X), s1,s2 being Element of
S st s1 <= s2 & x in (the Sorts of ParsedTermsOSA(X)).s1 & y in (the Sorts of
ParsedTermsOSA(X)).s1 holds [y,s1] in (PTClasses X).x iff [y,s2] in (PTClasses
X).x
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), C = bool [:TS(D), the carrier
of S:], SPTA = the Sorts of PTA, F = PTClasses X;
defpred R3[set] means for s1,s2 being Element of S, y being Element of TS(
DTConOSA X) st s1 <= s2 & $1 in SPTA.s1 & y in SPTA.s1 holds ([y,s1] in (
PTClasses X).$1 iff [y,s2] in (PTClasses X).$1);
A1: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds R3[t]
holds R3[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A2: nt ==> roots ts and
for t being DecoratedTree of the carrier of D st t in rng ts holds R3[ t];
consider o being OperSymbol of S such that
A3: nt = [o,the carrier of S] and
ts in Args(o,PTA) and
nt-tree ts = Den(o,PTA).ts and
A4: for s1 being Element of S holds nt-tree ts in (the Sorts of PTA).
s1 iff the_result_sort_of o <= s1 by A2,Th12;
reconsider x = F * ts as FinSequence of C;
let s1,s2 be Element of S, y be Element of TS D such that
A5: s1 <= s2 and
A6: nt-tree ts in SPTA.s1 and
A7: y in SPTA.s1;
A8: F.(nt-tree ts) = @(nt,x) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y};
hereby
reconsider s21 = s2 as Element of S;
assume [y,s1] in F.(nt-tree ts);
then consider
o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A9: [y,s1] = [Den(o2,PTA).x2,s3] and
A10: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1
~= o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3
& the_result_sort_of o2 <= s3 and
A11: ex w3 being Element of (the carrier of S)* st dom w3 = dom x &
for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A8;
consider o1 being OperSymbol of S such that
A12: nt = [o1,the carrier of S] and
A13: o1 ~= o2 and
A14: len the_arity_of o1 = len the_arity_of o2 and
A15: the_result_sort_of o1 <= s3 and
A16: the_result_sort_of o2 <= s3 by A10;
A17: y = Den(o2,PTA).x2 by A9,XTUPLE_0:1;
A18: s1 = s3 by A9,XTUPLE_0:1;
then
A19: the_result_sort_of o2 <= s21 by A5,A16,ORDERS_2:3;
the_result_sort_of o1 <= s21 by A5,A18,A15,ORDERS_2:3;
hence [y,s2] in F.(nt-tree ts) by A8,A11,A17,A12,A13,A14,A19;
end;
assume [y,s2] in F.(nt-tree ts);
then consider
o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A20: [y,s2] = [Den(o2,PTA).x2,s3] and
A21: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1 ~=
o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3 &
the_result_sort_of o2 <= s3 and
A22: ex w3 being Element of (the carrier of S)* st dom w3 = dom x &
for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A8;
reconsider x3 = x2 as FinSequence of TS D by Th13;
OSSym(o2,X) ==> roots x2 by Th13;
then consider o3 being OperSymbol of S such that
A23: OSSym(o2,X) = [o3,the carrier of S] and
x3 in Args(o3,PTA) and
A24: OSSym(o2,X)-tree x3 = Den(o3,PTA).x3 and
A25: for s2 being Element of S holds OSSym(o2,X)-tree x3 in (the Sorts
of PTA).s2 iff the_result_sort_of o3 <= s2 by Th12;
A26: y = Den(o2,PTA).x2 by A20,XTUPLE_0:1;
o2 = o3 by A23,XTUPLE_0:1;
then
A27: the_result_sort_of o2 <= s1 by A7,A26,A24,A25;
consider o1 being OperSymbol of S such that
A28: nt = [o1,the carrier of S] and
A29: o1 ~= o2 and
A30: len the_arity_of o1 = len the_arity_of o2 and
the_result_sort_of o1 <= s3 and
the_result_sort_of o2 <= s3 by A21;
the_result_sort_of o <= s1 by A4,A6;
then the_result_sort_of o1 <= s1 by A3,A28,XTUPLE_0:1;
hence thesis by A8,A22,A26,A28,A29,A30,A27;
end;
A31: for s being Symbol of D st s in Terminals D holds R3[root-tree s]
proof
let sy be Symbol of D such that
A32: sy in Terminals D;
reconsider sy1 = sy as Terminal of D by A32;
A33: F.(root-tree sy) = @(sy) by A32,Def21
.= {[root-tree sy,s1] where s1 is Element of S: ex s2 be Element of S,
x be set st x in X.s2 & sy = [x,s2] & s2 <= s1};
let s1,s2 be Element of S, y be Element of TS D such that
A34: s1 <= s2 and
A35: root-tree sy in SPTA.s1 and
y in SPTA.s1;
SPTA.s1 c= SPTA.s2 by A34,OSALG_1:def 16;
then
A36: [root-tree sy1,s2] in F.(root-tree sy) by A35,Th19;
hereby
assume [y,s1] in F.(root-tree sy);
then
ex s3 being Element of S st [y,s1] = [root-tree sy,s3] & ex s2 be
Element of S, x be set st x in X.s2 & sy = [x,s2] & s2 <= s3 by A33;
hence [y,s2] in F.(root-tree sy) by A36,XTUPLE_0:1;
end;
assume [y,s2] in F.(root-tree sy);
then
A37: ex s3 being Element of S st [y,s2] = [root-tree sy,s3] & ex s4 be
Element of S, x be set st x in X.s4 & sy = [x,s4] & s4 <= s3 by A33;
[root-tree sy1,s1] in F.(root-tree sy) by A35,Th19;
hence thesis by A37,XTUPLE_0:1;
end;
for t being DecoratedTree of the carrier of D st t in TS(D) holds R3[t]
from DTCONSTR:sch 7(A31,A1);
hence thesis;
end;
theorem Th22:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, x,y,z being Element of TS DTConOSA(X), s being Element of S
holds [y,s] in (PTClasses X).x & [z,s] in (PTClasses X).y implies [x,s] in (
PTClasses X).z
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), C = bool [:TS(D), the carrier
of S:], SPTA = the Sorts of PTA, F = PTClasses X;
defpred R3[set] means for s being Element of S, y,z being Element of TS(D)
holds [y,s] in F.$1 & [z,s] in F.y implies [$1,s] in F.z;
A1: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds R3[t]
holds R3[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A2: nt ==> roots ts and
A3: for t being DecoratedTree of the carrier of D st t in rng ts holds R3[t];
consider o being OperSymbol of S such that
A4: nt = [o,the carrier of S] and
A5: ts in Args(o,PTA) and
A6: nt-tree ts = Den(o,PTA).ts and
for s1 being Element of S holds nt-tree ts in (the Sorts of PTA).s1
iff the_result_sort_of o <= s1 by A2,Th12;
reconsider ts1 = ts as Element of Args(o,PTA) by A5;
set w = the_arity_of o;
A7: dom w = dom ts by A5,MSUALG_3:6;
reconsider x = F * ts as FinSequence of C;
A8: rng ts c= TS D by FINSEQ_1:def 4;
dom F = TS D by FUNCT_2:def 1;
then len x = len ts by A8,FINSEQ_2:29;
then
A9: dom x = dom ts by FINSEQ_3:29;
A10: F.(nt-tree ts) = @(nt,x) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom x & for y
being Nat st y in dom x holds [x2.y,w3/.y] in x.y};
thus R3[nt-tree ts]
proof
let s1 be Element of S, y,z be Element of TS(D);
assume that
A11: [y,s1] in F.(nt-tree ts) and
A12: [z,s1] in F.y;
consider o2 being OperSymbol of S, x2 being Element of Args(o2,PTA), s3
being Element of S such that
A13: [y,s1] = [Den(o2,PTA).x2,s3] and
A14: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1
~= o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3
& the_result_sort_of o2 <= s3 and
A15: ex w3 being Element of (the carrier of S)* st dom w3 = dom x &
for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A10,A11;
A16: y = Den(o2,PTA).x2 by A13,XTUPLE_0:1;
reconsider x3 = x2 as FinSequence of TS D by Th13;
reconsider xy = F * x3 as FinSequence of C;
A17: OSSym(o2,X) ==> roots x2 by Th13;
then consider o3 being OperSymbol of S such that
A18: OSSym(o2,X) = [o3,the carrier of S] and
x3 in Args(o3,PTA) and
A19: OSSym(o2,X)-tree x3 = Den(o3,PTA).x3 and
for s2 being Element of S holds OSSym(o2,X)-tree x3 in (the Sorts of
PTA).s2 iff the_result_sort_of o3 <= s2 by Th12;
o2 = o3 by A18,XTUPLE_0:1;
then F.y = @(OSSym(o2,X),xy) by A16,A17,A19,Def21
.= {[Den(o4,PTA).x4,s4] where o4 is OperSymbol of S, x4 is Element
of Args(o4,PTA), s4 is Element of S : ( ex o1 being OperSymbol of S st OSSym(o2
,X) = [o1,the carrier of S] & o1 ~= o4 & len the_arity_of o1 = len the_arity_of
o4 & the_result_sort_of o1 <= s4 & the_result_sort_of o4 <= s4 ) & ex w4 being
Element of (the carrier of S)* st dom w4 = dom xy & for y being Nat st y in dom
xy holds [x4.y,w4/.y] in xy.y};
then consider
o5 being OperSymbol of S, x5 being Element of Args(o5,PTA), s5
being Element of S such that
A20: [z,s1] = [Den(o5,PTA).x5,s5] and
A21: ex o1 being OperSymbol of S st OSSym(o2,X) = [o1,the carrier of
S] & o1 ~= o5 & len the_arity_of o1 = len the_arity_of o5 & the_result_sort_of
o1 <= s5 & the_result_sort_of o5 <= s5 and
A22: ex w3 being Element of (the carrier of S)* st dom w3 = dom xy &
for y being Nat st y in dom xy holds [x5.y,w3/.y] in xy.y by A12;
consider o6 being OperSymbol of S such that
A23: OSSym(o2,X) = [o6,the carrier of S] and
A24: o6 ~= o5 and
A25: len the_arity_of o6 = len the_arity_of o5 and
the_result_sort_of o6 <= s5 and
A26: the_result_sort_of o5 <= s5 by A21;
A27: the_result_sort_of o5 <= s1 by A20,A26,XTUPLE_0:1;
reconsider x6 = x5 as FinSequence of TS D by Th13;
reconsider xz = F * x6 as FinSequence of C;
defpred P[object,object] means [ts1.$1,$2] in xz.$1;
rng x3 c= TS D by FINSEQ_1:def 4;
then rng x3 c= dom F by FUNCT_2:def 1;
then len xy = len x3 by FINSEQ_2:29;
then
A28: dom x3 = dom xy by FINSEQ_3:29;
consider w5 being Element of (the carrier of S)* such that
dom w5 = dom xy and
A29: for y being Nat st y in dom xy holds [x5.y,w5/.y] in xy.y by A22;
consider w3 being Element of (the carrier of S)* such that
dom w3 = dom x and
A30: for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y by A15;
A31: z = Den(o5,PTA).x5 by A20,XTUPLE_0:1;
A32: OSSym(o5,X) ==> roots x5 by Th13;
then consider o7 being OperSymbol of S such that
A33: OSSym(o5,X) = [o7,the carrier of S] and
x6 in Args(o7,PTA) and
A34: OSSym(o5,X)-tree x6 = Den(o7,PTA).x6 and
for s2 being Element of S holds OSSym(o5,X)-tree x6 in (the Sorts of
PTA).s2 iff the_result_sort_of o7 <= s2 by Th12;
o5 = o7 by A33,XTUPLE_0:1;
then
A35: F.z = @(OSSym(o5,X),xz) by A31,A32,A34,Def21
.= {[Den(o4,PTA).x4,s4] where o4 is OperSymbol of S, x4 is Element
of Args(o4,PTA), s4 is Element of S : ( ex o1 being OperSymbol of S st OSSym(o5
,X) = [o1,the carrier of S] & o1 ~= o4 & len the_arity_of o1 = len the_arity_of
o4 & the_result_sort_of o1 <= s4 & the_result_sort_of o4 <= s4 ) & ex w4 being
Element of (the carrier of S)* st dom w4 = dom xz & for y being Nat st y in dom
xz holds [x4.y,w4/.y] in xz.y};
consider o1 being OperSymbol of S such that
A36: nt = [o1,the carrier of S] and
A37: o1 ~= o2 and
A38: len the_arity_of o1 = len the_arity_of o2 and
A39: the_result_sort_of o1 <= s3 and
the_result_sort_of o2 <= s3 by A14;
A40: o1 = o by A4,A36,XTUPLE_0:1;
then
A41: the_result_sort_of o <= s1 by A13,A39,XTUPLE_0:1;
A42: dom the_arity_of o2 = dom the_arity_of o by A38,A40,FINSEQ_3:29;
then
A43: dom x2 = dom x by A9,A7,MSUALG_3:6;
A44: rng x6 c= TS D by FINSEQ_1:def 4;
then rng x6 c= dom F by FUNCT_2:def 1;
then len xz = len x6 by FINSEQ_2:29;
then
A45: dom x6 = dom xz by FINSEQ_3:29;
A46: o6 = o2 by A23,XTUPLE_0:1;
then dom the_arity_of o5 = dom the_arity_of o2 by A25,FINSEQ_3:29;
then
A47: dom x5 = dom (the_arity_of o2) by MSUALG_3:6
.= dom xy by A28,MSUALG_3:6;
A48: rng x3 c= TS D by FINSEQ_1:def 4;
A49: for y being object st y in dom xz
ex sy being object st sy in the carrier of S & P[y,sy]
proof
let y be object such that
A50: y in dom xz;
A51: x5.y in rng x6 by A45,A50,FUNCT_1:3;
A52: x2.y in rng x3 by A28,A45,A47,A50,FUNCT_1:3;
ts1.y in rng ts1 by A9,A28,A43,A45,A47,A50,FUNCT_1:3;
then reconsider
t1 = ts1.y,t2 = x3.y,t3 = x5.y as Element of TS D by A8,A44,A48,A51,A52
;
A53: [x2.y,w3/.y] in x.y by A30,A28,A43,A45,A47,A50;
y in dom ts1 by A7,A42,A28,A45,A47,A50,MSUALG_3:6;
then
A54: [t2,w3/.y] in F.(t1) by A53,FUNCT_1:13;
then [t1,w3/.y] in F.t1 by Th20;
then
A55: t1 in SPTA.(w3/.y) by Th19;
[t1,w3/.y] in F.t2 by A54,Th19;
then [t2,w3/.y] in F.t2 by Th20;
then
A56: t2 in SPTA.(w3/.y) by Th19;
then
A57: LeastSort t2 <= w3/.y by Def12;
[x5.y,w5/.y] in xy.y by A29,A45,A47,A50;
then
A58: [t3,w5/.y] in F.(t2) by A28,A45,A47,A50,FUNCT_1:13;
then [t2,w5/.y] in F.(t2) by Th20;
then
A59: t2 in SPTA.(w5/.y) by Th19;
then LeastSort t2 <= w5/.y by Def12;
then consider s7 being Element of S such that
A60: w5/.y <= s7 and
A61: w3/.y <= s7 by A57,OSALG_4:11;
[t2,w5/.y] in F.t3 by A58,Th19;
then [t3,w5/.y] in F.t3 by Th20;
then t3 in SPTA.(w5/.y) by Th19;
then
A62: [t3,s7] in F.t2 by A58,A59,A60,Th21;
take s7;
thus s7 in the carrier of S;
[x2.y,w3/.y] in F.(ts1.y) by A9,A28,A43,A45,A47,A50,A53,FUNCT_1:13;
then [t2,s7] in F.t1 by A56,A55,A61,Th21;
then [t1,s7] in F.t3 by A3,A9,A28,A43,A45,A47,A50,A62,FUNCT_1:3;
hence thesis by A50,FUNCT_1:12;
end;
consider f being Function of dom xz,(the carrier of S) such that
A63: for y being object st y in dom xz holds P[y,f.y] from FUNCT_2:sch
1(A49);
A64: dom f = dom xz by FUNCT_2:def 1;
then ex n being Nat st dom f = Seg n by FINSEQ_1:def 2;
then reconsider f1 = f as FinSequence by FINSEQ_1:def 2;
rng f c= the carrier of S by RELAT_1:def 19;
then f1 is FinSequence of the carrier of S by FINSEQ_1:def 4;
then reconsider f as Element of (the carrier of S)* by FINSEQ_1:def 11;
A65: dom f = dom xz & for y being Nat st y in dom xz holds [ts1.y,f/.y]
in xz.y
proof
thus dom f = dom xz by FUNCT_2:def 1;
let y be Nat such that
A66: y in dom xz;
[ts1.y,f.y] in xz.y by A63,A66;
hence thesis by A64,A66,PARTFUN1:def 6;
end;
o5 ~= o by A37,A40,A24,A46,OSALG_1:2;
hence thesis by A6,A38,A40,A25,A46,A65,A35,A27,A41;
end;
end;
A67: for s being Symbol of D st s in Terminals D holds R3[root-tree s]
proof
let sy be Symbol of D;
assume sy in Terminals D;
then
A68: F.(root-tree sy) = @(sy) by Def21
.= {[root-tree sy,s1] where s1 is Element of S: ex s2 be Element of S,
x be set st x in X.s2 & sy = [x,s2] & s2 <= s1};
thus R3[root-tree sy]
proof
let s1 be Element of S, y,z be Element of TS(D);
assume that
A69: [y,s1] in F.(root-tree sy) and
A70: [z,s1] in F.y;
ex s2 being Element of S st [y,s1] = [root-tree sy,s2] & ex s0 be
Element of S, x be set st x in X.s0 & sy = [x,s0] & s0 <= s2 by A68,A69;
then
A71: y = root-tree sy by XTUPLE_0:1;
then
ex s3 being Element of S st [z,s1] = [root-tree sy,s3] & ex s0 be
Element of S, x be set st x in X.s0 & sy = [x,s0] & s0 <= s3 by A68,A70;
hence thesis by A69,A71,XTUPLE_0:1;
end;
end;
for t being DecoratedTree of the carrier of D st t in TS(D) holds R3[t
] from DTCONSTR:sch 7(A67,A1);
hence thesis;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func PTCongruence(X) -> MSEquivalence-like OrderSortedRelation of
ParsedTermsOSA(X) means
:Def22:
for i being set st i in the carrier of S holds
it.i = {[x,y] where x,y is Element of TS(DTConOSA(X)): [x,i] in (PTClasses X).y
};
existence
proof
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D = DTConOSA(X), F =
PTClasses X;
deffunc F(object) =
{[x,y] where x,y is Element of TS(D): [x,$1] in F.y};
consider R being ManySortedSet of the carrier of S such that
A1: for i being object st i in the carrier of S holds R.i = F(i) from
PBOOLE:sch 4;
for i be set st i in the carrier of S holds R.i is Relation of SPTA.i
proof
let i be set such that
A2: i in the carrier of S;
reconsider s = i as Element of S by A2;
A3: R.i = {[x,y] where x,y is Element of TS(D): [x,i] in F.y} by A1,A2;
R.s c= [:SPTA.s,SPTA.s:]
proof
let z be object;
assume z in R.s;
then consider x,y being Element of TS D such that
A4: z = [x,y] and
A5: [x,s] in F.y by A3;
[y,s] in F.x by A5,Th19;
then [x,s] in F.x by Th20;
then
A6: x in SPTA.s by Th19;
[y,s] in F.y by A5,Th20;
then y in SPTA.s by Th19;
hence thesis by A4,A6,ZFMISC_1:87;
end;
hence thesis;
end;
then reconsider R as ManySortedRelation of PTA by MSUALG_4:def 1;
for s1,s2 being Element of S st s1 <= s2 for x,y being set st x in
SPTA.s1 & y in SPTA.s1 holds [x,y] in R.s1 iff [x,y] in R.s2
proof
let s1,s2 be Element of S such that
A7: s1 <= s2;
A8: R.s1 = {[x,y] where x,y is Element of TS(D): [x,s1] in F.y} by A1;
A9: R.s2 = {[x,y] where x,y is Element of TS(D): [x,s2] in F.y} by A1;
let x,y be set such that
A10: x in SPTA.s1 and
A11: y in SPTA.s1;
hereby
assume [x,y] in R.s1;
then consider t1,t2 being Element of TS D such that
A12: [x,y] = [t1,t2] and
A13: [t1,s1] in F.t2 by A8;
A14: y = t2 by A12,XTUPLE_0:1;
x = t1 by A12,XTUPLE_0:1;
then [t1,s2] in F.t2 by A7,A10,A11,A13,A14,Th21;
hence [x,y] in R.s2 by A9,A12;
end;
assume [x,y] in R.s2;
then consider t1,t2 being Element of TS D such that
A15: [x,y] = [t1,t2] and
A16: [t1,s2] in F.t2 by A9;
A17: y = t2 by A15,XTUPLE_0:1;
x = t1 by A15,XTUPLE_0:1;
then [t1,s1] in F.t2 by A7,A10,A11,A16,A17,Th21;
hence thesis by A8,A15;
end;
then
A18: R is os-compatible;
defpred IRREL[Element of TS D,Element of S] means (ex s1 being Element of
S, x be object
st s1 <= $2 & x in X.s1 & $1 = root-tree [x,s1]) or ex o be
OperSymbol of S st [o,the carrier of S] = $1.{} & the_result_sort_of o <= $2;
reconsider R as OrderSortedRelation of PTA by A18,OSALG_4:def 2;
for i be set, Ri be Relation of SPTA.i st i in the carrier of S & R.i
= Ri holds Ri is total symmetric transitive Relation of SPTA.i
proof
let i be set, Ri be Relation of SPTA.i such that
A19: i in the carrier of S and
A20: R.i = Ri;
reconsider s = i as Element of S by A19;
A21: Ri = {[x,y] where x,y is Element of TS(D): [x,i] in F.y} by A1,A19,A20;
for x,y being object holds x in SPTA.i & y in SPTA.i & [x,y] in Ri
implies [y,x] in Ri
proof
let x,y be object such that
x in SPTA.i and
y in SPTA.i and
A22: [x,y] in Ri;
consider t1,t2 being Element of TS D such that
A23: [x,y] = [t1,t2] and
A24: [t1,s] in F.t2 by A21,A22;
A25: x = t1 by A23,XTUPLE_0:1;
A26: y = t2 by A23,XTUPLE_0:1;
[t2,s] in F.t1 by A24,Th19;
hence thesis by A21,A25,A26;
end;
then
A27: Ri is_symmetric_in SPTA.i by RELAT_2:def 3;
now
let x,y,z be object such that
x in SPTA.i and
y in SPTA.i and
z in SPTA.i and
A28: [x,y] in Ri and
A29: [y,z] in Ri;
consider t1,t2 being Element of TS D such that
A30: [x,y] = [t1,t2] and
A31: [t1,s] in F.t2 by A21,A28;
A32: [t2,s] in F.t1 by A31,Th19;
consider t22,t3 being Element of TS D such that
A33: [y,z] = [t22,t3] and
A34: [t22,s] in F.t3 by A21,A29;
A35: y = t22 by A33,XTUPLE_0:1;
y = t2 by A30,XTUPLE_0:1;
then [t3,s] in F.t2 by A34,A35,Th19;
then
A36: [t1,s] in F.t3 by A32,Th22;
A37: z = t3 by A33,XTUPLE_0:1;
x = t1 by A30,XTUPLE_0:1;
hence [x,z] in Ri by A21,A37,A36;
end;
then
A38: Ri is_transitive_in SPTA.i by RELAT_2:def 8;
A39: SPTA.s = {a where a is Element of TS(DTConOSA(X)): IRREL[a,s]} by Th9;
now
let x be object such that
A40: x in SPTA.i;
consider t being Element of TS D such that
A41: x = t and
IRREL[t,s] by A39,A40;
[t,s] in F.t by A40,A41,Th19;
hence [x,x] in Ri by A21,A41;
end;
then
A42: Ri is_reflexive_in SPTA.i by RELAT_2:def 1;
then
A43: field Ri = SPTA.i by ORDERS_1:13;
dom Ri = SPTA.i by A42,ORDERS_1:13;
hence thesis by A43,A27,A38,PARTFUN1:def 2,RELAT_2:def 11,def 16;
end;
then R is MSEquivalence_Relation-like by MSUALG_4:def 2;
then reconsider R as MSEquivalence-like OrderSortedRelation of PTA by
MSUALG_4:def 3;
take R;
thus thesis by A1;
end;
uniqueness
proof
set D = DTConOSA(X), F = PTClasses X;
let R1,R2 be MSEquivalence-like OrderSortedRelation of ParsedTermsOSA(X)
such that
A44: for i being set st i in the carrier of S holds R1.i = {[x,y]
where x,y is Element of TS(D): [x,i] in F.y} and
A45: for i being set st i in the carrier of S holds R2.i = {[x,y]
where x,y is Element of TS(D): [x,i] in F.y};
now
let i be object such that
A46: i in the carrier of S;
R1.i = {[x,y] where x,y is Element of TS(D): [x,i] in F.y} by A44,A46;
hence R1.i = R2.i by A45,A46;
end;
hence R1 = R2;
end;
end;
theorem Th23:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, x,y,s being object
st [x,s] in (PTClasses X).y holds x in TS
DTConOSA(X) & y in TS DTConOSA(X) & s in the carrier of S
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), F = PTClasses X;
A1: rng F c= bool [:TS(D), the carrier of S:] by RELAT_1:def 19;
let x,y,s being object such that
A2: [x,s] in (PTClasses X).y;
A3: y in TS D
proof
assume not y in TS D;
then not y in dom F;
hence contradiction by A2,FUNCT_1:def 2;
end;
dom F = TS(D) by FUNCT_2:def 1;
then F.y in rng F by A3,FUNCT_1:3;
hence thesis by A2,A1,A3,ZFMISC_1:87;
end;
theorem Th24:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, C be Component of S, x,y being object
holds [x,y] in CompClass
(PTCongruence X,C) iff ex s1 being Element of S st s1 in C & [x,s1] in (
PTClasses X).y
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, C be Component of S, x,y being object;
hereby
assume [x,y] in CompClass(PTCongruence X,C);
then consider s1 being Element of S such that
A1: s1 in C and
A2: [x,y] in (PTCongruence X).s1 by OSALG_4:def 9;
A3: [x,y] in {[x1,y1] where x1,y1 is Element of TS(DTConOSA(X)): [x1,s1]
in (PTClasses X).y1} by A2,Def22;
take s1;
consider x1,y1 being Element of TS(DTConOSA(X)) such that
A4: [x,y] = [x1,y1] and
A5: [x1,s1] in (PTClasses X).y1 by A3;
x = x1 by A4,XTUPLE_0:1;
hence s1 in C & [x,s1] in (PTClasses X).y by A1,A4,A5,XTUPLE_0:1;
end;
given s1 being Element of S such that
A6: s1 in C and
A7: [x,s1] in (PTClasses X).y;
reconsider x2 = x, y2 = y as Element of TS(DTConOSA(X)) by A7,Th23;
[x2,y2] in {[x1,y1] where x1,y1 is Element of TS(DTConOSA(X)): [x1,s1]
in (PTClasses X).y1} by A7;
then [x2,y2] in (PTCongruence(X)).s1 by Def22;
hence thesis by A6,OSALG_4:def 9;
end;
theorem Th25:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, s be Element of S, x be Element of (the Sorts of
ParsedTermsOSA(X)).s holds OSClass(PTCongruence X,x) = proj1((PTClasses X).x)
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S, x be Element of (the Sorts of ParsedTermsOSA(X)).s;
set R = PTCongruence X, PTA = ParsedTermsOSA(X), D = DTConOSA(X);
for z being object holds z in OSClass(R,x) iff z in proj1((PTClasses X).x)
proof
let z be object;
hereby
assume z in OSClass(R,x);
then [z,x] in CompClass(R, CComp(s)) by EQREL_1:19;
then
ex s1 being Element of S st s1 in CComp(s) & [z,s1] in ( PTClasses
X).x by Th24;
hence z in proj1((PTClasses X).x) by XTUPLE_0:def 12;
end;
assume z in proj1((PTClasses X).x);
then consider s1 being object such that
A1: [z,s1] in (PTClasses X).x by XTUPLE_0:def 12;
reconsider s2 = s1 as Element of S by A1,Th23;
reconsider x1=x,z1=z as Element of TS(D) by A1,Th23;
A2: LeastSort x1 <= s by Def12;
[z1,s2] in (PTClasses X).x1 by A1;
then [x1,s2] in (PTClasses X).x1 by Th20;
then x in (the Sorts of PTA).s1 by Th19;
then LeastSort x1 <= s2 by Def12;
then CComp(s2) = CComp(LeastSort x1) by OSALG_4:4
.= CComp(s) by A2,OSALG_4:4;
then s2 in CComp(s) by EQREL_1:20;
then [z,x] in CompClass(R,CComp(s)) by A1,Th24;
hence thesis by EQREL_1:19;
end;
hence thesis by TARSKI:2;
end;
:: more explicit description of PTCongruence
theorem Th26:
for S being locally_directed OrderSortedSign, X being non-empty
ManySortedSet of S, R being ManySortedRelation of ParsedTermsOSA(X) holds R =
PTCongruence(X) iff
( for s1,s2 being Element of S, x being object st x in X.s1
holds ( s1 <= s2 implies [root-tree [x,s1],root-tree[x,s1]] in R.s2 ) &
for y being object
holds ( [root-tree [x,s1],y] in R.s2 or [y,root-tree [x,s1]] in R.s2)
implies s1 <= s2 & y = root-tree [x,s1] ) & for o1,o2 being OperSymbol of S, x1
being Element of Args(o1,ParsedTermsOSA(X)), x2 being Element of Args(o2,
ParsedTermsOSA(X)), s3 being Element of S holds [Den(o1,ParsedTermsOSA(X)).x1,
Den(o2,ParsedTermsOSA(X)).x2] in R.s3 iff o1 ~= o2 & len the_arity_of o1 = len
the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <= s3 &
ex w3 being Element of (the carrier of S)* st dom w3 = dom x1 & for y being Nat
st y in dom w3 holds [x1.y,x2.y] in R.(w3/.y)
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, R be ManySortedRelation of ParsedTermsOSA(X);
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D = DTConOSA(X), OU =
[:the carrier' of S,{the carrier of S}:] \/ Union (coprod (X qua ManySortedSet
of S)), C = bool [:TS(D), the carrier of S:], F = PTClasses X;
defpred T[ ManySortedSet of the carrier of S] means
( for s1,s2 being Element of S, x being object st x in X.s1
holds ( s1 <= s2 implies [root-tree [x,s1],root-tree[x,s1]] in $1.s2 ) &
for y being object holds ( [root-tree [x,s1],y]
in $1.s2 or [y,root-tree [x,s1]] in $1.s2) implies s1 <= s2 & y = root-tree [x,
s1] );
defpred NT[ ManySortedSet of the carrier of S] means for o1,o2 being
OperSymbol of S, x1 being Element of Args(o1,ParsedTermsOSA(X)), x2 being
Element of Args(o2,ParsedTermsOSA(X)), s3 being Element of S holds [Den(o1,
ParsedTermsOSA(X)).x1,Den(o2,ParsedTermsOSA(X)).x2] in $1.s3 iff o1 ~= o2 & len
the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3 &
the_result_sort_of o2 <= s3 & ex w3 being Element of (the carrier of S)* st dom
w3 = dom x1 & ( for y being Nat st y in dom w3 holds [x1.y,x2.y] in $1.(w3/.y)
);
set P = PTCongruence X;
A1: for R1,R2 be ManySortedRelation of PTA st T[R1] & NT[R1] & T[R2] & NT[R2
] holds R1 = R2
proof
let R1,R2 be ManySortedRelation of PTA;
assume that
A2: T[R1] and
A3: NT[R1] and
A4: T[R2] and
A5: NT[R2];
defpred P[set] means
for x being object, s being Element of S holds [$1,x] in
R1.s iff [$1,x] in R2.s;
A6: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==>
roots ts & for t being DecoratedTree of the carrier of D st t in rng ts holds P
[t] holds P[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D) such that
A7: nt ==> roots ts and
A8: for t being DecoratedTree of the carrier of D st t in rng ts holds P[t];
nt in { s where s is Symbol of D: ex n being FinSequence st s ==> n
} by A7;
then reconsider nt1 = nt as NonTerminal of D by LANG1:def 3;
reconsider tss = ts as SubtreeSeq of nt1 by A7,DTCONSTR:def 6;
let x be object, s be Element of S;
A9: rng ts c= TS D by FINSEQ_1:def 4;
[nt,roots ts] in the Rules of D by A7,LANG1:def 1;
then reconsider rt = roots ts as Element of OU* by ZFMISC_1:87;
reconsider sy = nt as Element of OU;
[sy,rt] in OSREL(X) by A7,LANG1:def 1;
then sy in [:the carrier' of S,{the carrier of S}:] by Def4;
then consider
o being Element of the carrier' of S, x2 being Element of {the
carrier of S} such that
A10: sy = [o,x2] by DOMAIN_1:1;
A11: x2 = the carrier of S by TARSKI:def 1;
then
A12: (nt-tree tss).{} = [o,the carrier of S] by A10,TREES_4:def 4;
then consider ts2 being SubtreeSeq of OSSym(o,X) such that
A13: nt1-tree tss = OSSym(o,X)-tree ts2 and
OSSym(o,X) ==> roots ts2 and
A14: ts2 in Args(o,PTA) and
A15: nt1-tree tss = Den(o,PTA).ts2 by Th11;
A16: (the Sorts of PTA).s = ParsedTerms(X,s) by Def8
.= {a1 where a1 is Element of TS(DTConOSA(X)): (ex s1 being Element
of S, x be object st s1 <= s & x in X.s1 & a1 = root-tree [x,s1])
or ex o be
OperSymbol of S st [o,the carrier of S] = a1.{} & the_result_sort_of o <= s};
hereby
assume
A17: [nt-tree ts,x] in R1.s;
then x in (the Sorts of PTA).s by ZFMISC_1:87;
then consider a1 being Element of TS(DTConOSA(X)) such that
A18: x = a1 and
A19: (ex s1 being Element of S, y be object st s1 <= s & y in X.s1 &
a1 = root-tree [y,s1]) or ex o be OperSymbol of S st [o,the carrier of S] = a1.
{} & the_result_sort_of o <= s by A16;
not ex s1 being Element of S, y be set st s1 <= s & y in X.s1 &
a1 = root-tree [y,s1]
proof
given s1 being Element of S, y be set such that
s1 <= s and
A20: y in X.s1 and
A21: a1 = root-tree [y,s1];
nt-tree ts = root-tree [y,s1] by A2,A17,A18,A20,A21;
then [y,s1] = nt by TREES_4:17;
then the carrier of S = s1 by A10,A11,XTUPLE_0:1;
then s1 in s1;
hence contradiction;
end;
then consider o1 be OperSymbol of S such that
A22: [o1,the carrier of S] = a1.{} and
the_result_sort_of o1 <= s by A19;
consider ts1 being SubtreeSeq of OSSym(o1,X) such that
a1 = OSSym(o1,X)-tree ts1 and
OSSym(o1,X) ==> roots ts1 and
A23: ts1 in Args(o1,PTA) and
A24: a1 = Den(o1,PTA).ts1 by A22,Th11;
consider ts2 being SubtreeSeq of OSSym(o,X) such that
A25: nt1-tree tss = OSSym(o,X)-tree ts2 and
OSSym(o,X) ==> roots ts2 and
A26: ts2 in Args(o,PTA) and
A27: nt1-tree tss = Den(o,PTA).ts2 by A12,Th11;
A28: len the_arity_of o = len the_arity_of o1 by A3,A17,A18,A23,A24,A26,A27;
reconsider tsb = ts2 as Element of Args(o,PTA) by A26;
reconsider tsa = ts1 as Element of Args(o1,PTA) by A23;
consider w3 being Element of (the carrier of S)* such that
A29: dom w3 = dom tsb and
A30: for y being Nat st y in dom w3 holds [tsb.y,tsa.y] in R1.(w3
/.y) by A3,A17,A18,A24,A27;
A31: ts2 = tss by A25,TREES_4:15;
A32: for y being Nat st y in dom w3 holds [tsb.y,tsa.y] in R2.(w3/.y)
proof
let y be Nat such that
A33: y in dom w3;
A34: tsb.y in rng ts by A31,A29,A33,FUNCT_1:3;
then reconsider t = tsb.y as Element of TS(D) by A9;
[t,tsa.y] in R1.(w3/.y) by A30,A33;
hence thesis by A8,A34;
end;
A35: the_result_sort_of o1 <= s by A3,A17,A18,A23,A24,A26,A27;
A36: the_result_sort_of o <= s by A3,A17,A18,A23,A24,A26,A27;
o ~= o1 by A3,A17,A18,A23,A24,A26,A27;
hence [nt-tree ts,x] in R2.s by A5,A18,A24,A27,A28,A36,A35,A29,A32;
end;
reconsider tsb = ts2 as Element of Args(o,PTA) by A14;
assume
A37: [nt-tree ts,x] in R2.s;
then x in (the Sorts of PTA).s by ZFMISC_1:87;
then consider a1 being Element of TS(DTConOSA(X)) such that
A38: x = a1 and
A39: (ex s1 being Element of S, y be object st s1 <= s & y in X.s1 & a1
= root-tree [y,s1]) or ex o be OperSymbol of S st [o,the carrier of S] = a1.{}
& the_result_sort_of o <= s by A16;
not ex s1 being Element of S, y be set st s1 <= s & y in X.s1 & a1
= root-tree [y,s1]
proof
given s1 being Element of S, y be set such that
s1 <= s and
A40: y in X.s1 and
A41: a1 = root-tree [y,s1];
nt-tree ts = root-tree [y,s1] by A4,A37,A38,A40,A41;
then [y,s1] = nt by TREES_4:17;
then the carrier of S = s1 by A10,A11,XTUPLE_0:1;
then s1 in s1;
hence contradiction;
end;
then consider o1 be OperSymbol of S such that
A42: [o1,the carrier of S] = a1.{} and
the_result_sort_of o1 <= s by A39;
consider ts1 being SubtreeSeq of OSSym(o1,X) such that
a1 = OSSym(o1,X)-tree ts1 and
OSSym(o1,X) ==> roots ts1 and
A43: ts1 in Args(o1,PTA) and
A44: a1 = Den(o1,PTA).ts1 by A42,Th11;
A45: len the_arity_of o = len the_arity_of o1 by A5,A37,A38,A43,A44,A14,A15;
reconsider tsa = ts1 as Element of Args(o1,PTA) by A43;
consider w3 being Element of (the carrier of S)* such that
A46: dom w3 = dom tsb and
A47: for y being Nat st y in dom w3 holds [tsb.y,tsa.y] in R2.(w3/.y
) by A5,A37,A38,A44,A15;
A48: ts2 = tss by A13,TREES_4:15;
A49: for y being Nat st y in dom w3 holds [tsb.y,tsa.y] in R1.(w3/.y)
proof
let y be Nat such that
A50: y in dom w3;
A51: tsb.y in rng ts by A48,A46,A50,FUNCT_1:3;
then reconsider t = tsb.y as Element of TS(D) by A9;
[t,tsa.y] in R2.(w3/.y) by A47,A50;
hence thesis by A8,A51;
end;
A52: the_result_sort_of o1 <= s by A5,A37,A38,A43,A44,A14,A15;
A53: the_result_sort_of o <= s by A5,A37,A38,A43,A44,A14,A15;
o ~= o1 by A5,A37,A38,A43,A44,A14,A15;
hence thesis by A3,A38,A44,A15,A45,A53,A52,A46,A49;
end;
A54: for s being Symbol of D st s in Terminals D holds P[root-tree s]
proof
let sy be Symbol of D;
assume sy in Terminals D;
then consider s being Element of S, x being set such that
A55: x in X.s and
A56: sy = [x,s] by Th4;
let y be object, s1 be Element of S;
hereby
assume
A57: [root-tree sy,y] in R1.s1;
then
A58: y = root-tree [x,s] by A2,A55,A56;
s <= s1 by A2,A55,A56,A57;
hence [root-tree sy,y] in R2.s1 by A4,A55,A56,A58;
end;
assume
A59: [root-tree sy,y] in R2.s1;
then
A60: y = root-tree [x,s] by A4,A55,A56;
s <= s1 by A4,A55,A56,A59;
hence thesis by A2,A55,A56,A60;
end;
A61: for t being DecoratedTree of the carrier of D st t in TS(D) holds P[t
] from DTCONSTR:sch 7(A54,A6);
for i being object st i in the carrier of S holds R1.i = R2.i
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as Element of S;
for a,b being object holds [a,b] in R1.s iff [a,b] in R2.s
proof
let a,b be object;
A62: (the Sorts of PTA).s = ParsedTerms(X,s) by Def8
.= {a1 where a1 is Element of TS(DTConOSA(X)): (ex s1 being
Element of S, x be object
st s1 <= s & x in X.s1 & a1 = root-tree [x,s1]) or ex o
be OperSymbol of S st [o,the carrier of S] = a1.{} & the_result_sort_of o <= s}
;
hereby
assume
A63: [a,b] in R1.s;
then a in (the Sorts of PTA).s by ZFMISC_1:87;
then ex a1 being Element of TS(DTConOSA(X)) st a = a1 &( (ex s1
being Element of S, x be object
st s1 <= s & x in X.s1 & a1 = root-tree [x,s1]) or
ex o be OperSymbol of S st [o,the carrier of S] = a1.{} & the_result_sort_of o
<= s) by A62;
hence [a,b] in R2.s by A61,A63;
end;
assume
A64: [a,b] in R2.s;
then a in (the Sorts of PTA).s by ZFMISC_1:87;
then
ex a1 being Element of TS(DTConOSA(X)) st a = a1 &( (ex s1 being
Element of S, x be object
st s1 <= s & x in X.s1 & a1 = root-tree [x,s1]) or ex o
be OperSymbol of S st [o,the carrier of S] = a1.{} & the_result_sort_of o <= s)
by A62;
hence thesis by A61,A64;
end;
hence thesis by RELAT_1:def 2;
end;
hence thesis;
end;
A65: NT[PTCongruence X]
proof
let o1,o2 be OperSymbol of S, x1 be Element of Args(o1,ParsedTermsOSA(X)),
x2 be Element of Args(o2,ParsedTermsOSA(X)), s3 be Element of S;
A66: dom (the_arity_of o2) = dom x2 by MSUALG_3:6;
A67: P.s3 = {[x3,y] where x3,y is Element of TS(DTConOSA(X)): [x3,s3] in
F.y} by Def22;
reconsider ts2 = x2 as FinSequence of TS(D) by Th13;
A68: dom (the_arity_of o1) = dom x1 by MSUALG_3:6;
reconsider ts1 = x1 as FinSequence of TS(D) by Th13;
A69: rng ts1 c= TS D by FINSEQ_1:def 4;
reconsider x = F * ts1 as FinSequence of C;
dom F = TS D by FUNCT_2:def 1;
then
A70: len x = len ts1 by A69,FINSEQ_2:29;
then
A71: dom x = dom ts1 by FINSEQ_3:29;
A72: OSSym(o1,X) ==> roots x1 by Th13;
then
A73: F.(OSSym(o1,X)-tree ts1) = @(OSSym(o1,X),x) by Def21
.= {[Den(o3,ParsedTermsOSA(X)).x3,s4] where o3 is OperSymbol of S, x3
is Element of Args(o3,ParsedTermsOSA(X)), s4 is Element of S : ( ex o4 being
OperSymbol of S st OSSym(o1,X) = [o4,the carrier of S] & o4 ~= o3 & len
the_arity_of o4 = len the_arity_of o3 & the_result_sort_of o4 <= s4 &
the_result_sort_of o3 <= s4 ) & ex w3 being Element of (the carrier of S)* st
dom w3 = dom x & for y being Nat st y in dom x holds [x3.y,w3/.y] in x.y};
A74: OSSym(o2,X) ==> roots x2 by Th13;
then reconsider
tx = OSSym(o1,X)-tree ts1, ty = OSSym(o2,X)-tree ts2 as Element
of TS D by A72,Th12;
A75: Den(o2,PTA).x2 = ((PTOper(X)).o2).x2 by MSUALG_1:def 6
.= PTDenOp(o2,X).ts2 by Def10
.= OSSym(o2,X)-tree ts2 by A74,Def9;
A76: Den(o1,PTA).x1 = ((PTOper(X)).o1).x1 by MSUALG_1:def 6
.= PTDenOp(o1,X).ts1 by Def10
.= OSSym(o1,X)-tree ts1 by A72,Def9;
A77: rng ts2 c= TS D by FINSEQ_1:def 4;
hereby
assume [Den(o1,PTA).x1,Den(o2,PTA).x2] in P.s3;
then consider t1,t2 being Element of TS D such that
A78: [Den(o1,PTA).x1,Den(o2,PTA).x2] = [t1,t2] and
A79: [t1,s3] in F.t2 by A67;
A80: Den(o1,PTA).x1 = t1 by A78,XTUPLE_0:1;
A81: Den(o2,PTA).x2 = t2 by A78,XTUPLE_0:1;
[t2,s3] in F.t1 by A79,Th19;
then consider o3 being OperSymbol of S, x3 being Element of Args(o3,
ParsedTermsOSA(X)), s4 being Element of S such that
A82: [t2,s3] = [Den(o3,PTA).x3,s4] and
A83: ex o4 being OperSymbol of S st OSSym(o1,X) = [o4,the carrier
of S] & o4 ~= o3 & len the_arity_of o4 = len the_arity_of o3 &
the_result_sort_of o4 <= s4 & the_result_sort_of o3 <= s4 and
A84: ex w3 being Element of (the carrier of S)* st dom w3 = dom x &
for y being Nat st y in dom x holds [x3.y,w3/.y] in x.y by A76,A73,A80;
consider o4 being OperSymbol of S such that
A85: OSSym(o1,X) = [o4,the carrier of S] and
A86: o4 ~= o3 and
A87: len the_arity_of o4 = len the_arity_of o3 and
A88: the_result_sort_of o4 <= s4 and
A89: the_result_sort_of o3 <= s4 by A83;
A90: o1 = o4 by A85,XTUPLE_0:1;
reconsider ts3 = x3 as FinSequence of TS(D) by Th13;
A91: OSSym(o3,X) ==> roots x3 by Th13;
A92: t2 = Den(o3,PTA).x3 by A82,XTUPLE_0:1;
A93: Den(o3,PTA).x3 = ((PTOper(X)).o3).x3 by MSUALG_1:def 6
.= PTDenOp(o3,X).ts3 by Def10
.= OSSym(o3,X)-tree ts3 by A91,Def9;
then
A94: OSSym(o3,X) = OSSym(o2,X) by A75,A81,A92,TREES_4:15;
s3 = s4 by A82,XTUPLE_0:1;
hence o1 ~= o2 & len the_arity_of o1 = len the_arity_of o2 &
the_result_sort_of o1 <= s3 & the_result_sort_of o2 <= s3 by A86,A87,A88
,A89,A90,A94,XTUPLE_0:1;
consider w3 being Element of (the carrier of S)* such that
A95: dom w3 = dom x and
A96: for y being Nat st y in dom x holds [x3.y,w3/.y] in x.y by A84;
take w3;
thus dom w3 = dom x1 by A70,A95,FINSEQ_3:29;
let y be Nat such that
A97: y in dom w3;
A98: ts1.y in rng ts1 by A71,A95,A97,FUNCT_1:3;
A99: ts3 = ts2 by A75,A81,A92,A93,TREES_4:15;
o3 = o2 by A94,XTUPLE_0:1;
then dom the_arity_of o1 = dom the_arity_of o2 by A87,A90,FINSEQ_3:29;
then ts2.y in rng ts2 by A71,A68,A66,A95,A97,FUNCT_1:3;
then reconsider
t22 = ts2.y,t11=ts1.y as Element of TS D by A69,A77,A98;
[x3.y,w3/.y] in x.y by A95,A96,A97;
then [ts2.y,w3/.y] in F.(ts1.y) by A99,A95,A97,FUNCT_1:12;
then
A100: [t11,w3/.y] in F.(t22) by Th19;
P.(w3/.y) = {[x5,y5] where x5,y5 is Element of TS(DTConOSA(X)): [
x5,w3/.y] in F.y5} by Def22;
hence [x1.y,x2.y] in P.(w3/.y) by A100;
end;
assume that
A101: o1 ~= o2 and
A102: len the_arity_of o1 = len the_arity_of o2 and
A103: the_result_sort_of o1 <= s3 and
A104: the_result_sort_of o2 <= s3 and
A105: ex w3 being Element of (the carrier of S)* st dom w3 = dom x1 &
for y being Nat st y in dom w3 holds [x1.y,x2.y] in P.(w3/.y);
consider w3 being Element of (the carrier of S)* such that
A106: dom w3 = dom x1 and
A107: for y being Nat st y in dom w3 holds [x1.y,x2.y] in P.(w3/.y) by A105;
for y being Nat st y in dom x holds [x2.y,w3/.y] in x.y
proof
let y being Nat such that
A108: y in dom x;
A109: P.(w3/.y) = {[x5,y5] where x5,y5 is Element of TS(DTConOSA(X)): [
x5,w3/.y] in F.y5} by Def22;
[x1.y,x2.y] in P.(w3/.y) by A71,A106,A107,A108;
then consider x5,y5 being Element of TS(DTConOSA(X)) such that
A110: [x1.y,x2.y] = [x5,y5] and
A111: [x5,w3/.y] in F.y5 by A109;
A112: x1.y = x5 by A110,XTUPLE_0:1;
A113: x2.y = y5 by A110,XTUPLE_0:1;
[y5,w3/.y] in F.x5 by A111,Th19;
hence thesis by A108,A112,A113,FUNCT_1:12;
end;
then [Den(o2,PTA).x2,s3] in F.(OSSym(o1,X)-tree ts1) by A71,A73,A101,A102
,A103,A104,A106;
then [tx,s3] in F.(ty) by A75,Th19;
hence [Den(o1,PTA).x1,Den(o2,PTA).x2] in P.s3 by A67,A76,A75;
end;
T[P]
proof
let s1,s2 be Element of S, x be object such that
A114: x in X.s1;
reconsider sy = [x,s1] as Terminal of D by A114,Th4;
A115: P.s2 = {[x1,y] where x1,y is Element of TS(DTConOSA(X)): [x1,s2] in F
.y} by Def22;
A116: root-tree [x,s1] in SPTA.s1 by A114,Th10;
hereby
assume
A117: s1 <= s2;
[root-tree sy,s1] in F.(root-tree sy) by A116,Th19;
then [root-tree sy,s2] in F.(root-tree sy) by A116,A117,Th21;
hence [root-tree [x,s1],root-tree[x,s1]] in P.s2 by A115;
end;
let y be object;
assume
A118: [root-tree [x,s1],y] in P.s2 or [y,root-tree [x,s1]] in P.s2;
then
A119: root-tree [x,s1] in SPTA.s2 by ZFMISC_1:87;
field(P.s2) = SPTA.s2 by ORDERS_1:12;
then
A120: P.s2 is_symmetric_in SPTA.s2 by RELAT_2:def 11;
A121: F.(root-tree sy) = @(sy) by Def21
.= {[root-tree sy,s3] where s3 is Element of S: ex s4 be Element of S,
x be set st x in X.s4 & sy = [x,s4] & s4 <= s3};
y in SPTA.s2 by A118,ZFMISC_1:87;
then [y,root-tree sy] in P.s2 by A120,A118,A119,RELAT_2:def 3;
then consider y1,r1 being Element of TS D such that
A122: [y,root-tree sy] = [y1,r1] and
A123: [y1,s2] in F.(r1) by A115;
A124: y = y1 by A122,XTUPLE_0:1;
root-tree sy = r1 by A122,XTUPLE_0:1;
then consider s3 being Element of S such that
A125: [y1,s2] = [root-tree sy,s3] and
A126: ex s4 be Element of S, x be set st x in X.s4 & sy = [x,s4] & s4
<= s3 by A121,A123;
s2 = s3 by A125,XTUPLE_0:1;
hence thesis by A124,A125,A126,XTUPLE_0:1;
end;
hence thesis by A1,A65;
end;
:: the minimality for regular oss is done later
theorem Th27:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S holds PTCongruence(X) is monotone
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set PTA = ParsedTermsOSA(X), P = PTCongruence X;
thus P is monotone
proof
let o1,o2 be OperSymbol of S such that
A1: o1 <= o2;
A2: o1 ~= o2 by A1;
A3: the_result_sort_of o1 <= the_result_sort_of o2 by A1;
let x1 be Element of Args(o1,PTA), x2 be Element of Args(o2,PTA) such that
A4: for y being Nat st y in dom x1 holds [x1.y,x2.y] in P.((
the_arity_of o2)/.y);
(the_arity_of o1) <= (the_arity_of o2) by A1;
then
A5: len (the_arity_of o1) = len (the_arity_of o2);
then dom (the_arity_of o2) = dom (the_arity_of o1) by FINSEQ_3:29;
then dom the_arity_of o2 = dom x1 by MSUALG_3:6;
hence thesis by A4,A2,A3,A5,Th26;
end;
end;
:: MSCongruence-like is ensured by the OSALG_4 cluster
registration
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
cluster PTCongruence(X) -> monotone;
coherence by Th27;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
func PTVars(s,X) -> Subset of (the Sorts of ParsedTermsOSA(X)).s means
:Def23: for x be object
holds x in it iff ex a be object st a in X.s & x = root-tree [a,s];
existence
proof
defpred P[object] means
ex a be object st a in X.s & $1 = root-tree [a,s];
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), SO = the Sorts of PTA;
consider A be set such that
A1: for x being object holds x in A iff x in SO.s & P[x] from XBOOLE_0:sch 1;
A c= SO.s
by A1;
then reconsider A as Subset of SO.s;
for x being object holds x in A iff P[x]
proof
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).s in rng coprod(X) by FUNCT_1:def 3;
then
A2: coprod(s,X) in rng coprod(X) by MSAFREE:def 3;
A3: Terminals D = Union (coprod X) by Th3;
set A1 = {aa where aa is Element of TS(D): (ex s1 being Element of S,x
be object
st s1 <= s & x in X.s1 & aa = root-tree [x,s1]) or ex o1 be OperSymbol
of S st [o1,the carrier of S] = aa.{} & the_result_sort_of o1 <= s};
let x be object;
thus x in A implies P[x] by A1;
assume
A4: P[x];
then consider a be set such that
A5: a in X.s and
A6: x = root-tree [a,s];
A7: (ParsedTerms X).s = ParsedTerms(X,s) by Def8;
set sa = [a,s];
sa in coprod(s,X) by A5,MSAFREE:def 2;
then sa in union rng coprod(X) by A2,TARSKI:def 4;
then
A8: sa in Terminals D by A3,CARD_3:def 4;
then reconsider sa as Symbol of D;
reconsider b = root-tree sa as Element of TS(D) by A8,DTCONSTR:def 1;
b in A1 by A5;
hence thesis by A1,A4,A6,A7;
end;
hence thesis;
end;
uniqueness
proof
set PTA = ParsedTermsOSA(X), SO = the Sorts of PTA;
let A,B be Subset of SO.s;
assume that
A9: for x be object holds x in A iff ex a be object st a in X.s & x =
root-tree [a,s] and
A10: for x be object holds x in B iff ex a be object st a in X.s & x =
root-tree [a,s];
thus A c= B
proof
let x be object;
assume x in A;
then ex a be object st a in X.s & x =root-tree [a,s] by A9;
hence thesis by A10;
end;
let x be object;
assume x in B;
then ex a be object st a in X.s & x = root-tree [a,s] by A10;
hence thesis by A9;
end;
end;
registration
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
cluster PTVars(s,X) -> non empty;
coherence
proof
consider x being object such that
A1: x in X.s by XBOOLE_0:def 1;
ex a be set st a in X.s & root-tree [x,s] = root-tree [a,s] by A1;
hence thesis by Def23;
end;
end;
theorem Th28:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, s be Element of S holds PTVars(s,X) = { root-tree t where t
is Symbol of DTConOSA(X): t in Terminals DTConOSA(X) & t`2 = s}
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
set D = DTConOSA(X), A = {root-tree t where t is Symbol of D : t in
Terminals D & t`2 = s};
thus PTVars(s,X) c= A
proof
let x be object;
assume x in PTVars(s,X);
then consider a be object such that
A1: a in X.s and
A2: x = root-tree [a,s] by Def23;
A3: [a,s] in Terminals D by A1,Th4;
then reconsider t = [a,s] as Symbol of D;
t`2 = s;
hence thesis by A2,A3;
end;
let x be object;
assume x in A;
then consider t be Symbol of D such that
A4: x = root-tree t and
A5: t in Terminals D and
A6: t`2 = s;
consider s1 be Element of S, a be set such that
A7: a in X.s1 and
A8: t = [a,s1] by A5,Th4;
s = s1 by A6,A8;
hence thesis by A4,A7,A8,Def23;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func PTVars(X) -> MSSubset of ParsedTermsOSA(X) means
:Def24:
for s be Element of S holds it.s = PTVars(s,X);
existence
proof
deffunc F(Element of S) = PTVars($1,X);
set PTA = ParsedTermsOSA(X);
consider f be Function such that
A1: dom f = the carrier of S & for s be Element of S holds f.s = F(s)
from FUNCT_1:sch 4;
reconsider f as ManySortedSet of the carrier of S by A1,PARTFUN1:def 2
,RELAT_1:def 18;
f c= the Sorts of PTA
proof
let x be object;
assume x in the carrier of S;
then reconsider s = x as Element of S;
f.s = PTVars(s,X) by A1;
hence thesis;
end;
then reconsider f as MSSubset of PTA by PBOOLE:def 18;
take f;
thus thesis by A1;
end;
uniqueness
proof
let A,B be MSSubset of ParsedTermsOSA(X);
assume that
A2: for s be Element of S holds A.s = PTVars(s,X) and
A3: for s be Element of S holds B.s = PTVars(s,X);
for i be object st i in the carrier of S holds A.i = B.i
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as SortSymbol of S;
A.s = PTVars(s,X) by A2;
hence thesis by A3;
end;
hence thesis;
end;
end;
theorem
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S holds PTVars(X) is non-empty
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
let x be object;
assume x in the carrier of S;
then reconsider s = x as Element of S;
(PTVars(X)).s = PTVars(s,X) by Def24;
hence thesis;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
func OSFreeGen(s,X) -> Subset of (the Sorts of FreeOSA(X)).s means
:Def25:
for x be object holds x in it
iff ex a be object st a in X.s & x = (OSNat_Hom(
ParsedTermsOSA(X),LCongruence(X)).s).(root-tree [a,s]);
existence
proof
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), PTC = LCongruence(X), SO =
the Sorts of FreeOSA(X), NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X));
defpred P[object] means
ex a be object st a in X.s & $1 = (NH.s).(root-tree [a,s]);
consider A be set such that
A1: for x being object holds x in A iff x in SO.s & P[x] from XBOOLE_0:sch 1;
A c= SO.s
by A1;
then reconsider A as Subset of SO.s;
for x being object holds x in A iff P[x]
proof
dom coprod(X) = the carrier of S by PARTFUN1:def 2;
then (coprod(X)).s in rng coprod(X) by FUNCT_1:def 3;
then
A2: coprod(s,X) in rng coprod(X) by MSAFREE:def 3;
A3: Terminals D = Union (coprod X) by Th3;
set A1 = {aa where aa is Element of TS(D): (ex s1 being Element of S,x
be object
st s1 <= s & x in X.s1 & aa = root-tree [x,s1]) or ex o1 be OperSymbol
of S st [o1,the carrier of S] = aa.{} & the_result_sort_of o1 <= s};
let x be object;
thus x in A implies P[x] by A1;
assume P[x];
then consider a be set such that
A4: a in X.s and
A5: x = (NH.s).(root-tree [a,s]);
A6: (ParsedTerms X).s = ParsedTerms(X,s) by Def8;
set sa = [a,s];
sa in coprod(s,X) by A4,MSAFREE:def 2;
then sa in union rng coprod(X) by A2,TARSKI:def 4;
then
A7: sa in Terminals D by A3,CARD_3:def 4;
then reconsider sa as Symbol of D;
reconsider b = root-tree sa as Element of TS(D) by A7,DTCONSTR:def 1;
b in A1 by A4;
then (NH.s).b in (the Sorts of QuotOSAlg(PTA,PTC)).s by A6,FUNCT_2:5;
hence thesis by A1,A4,A5;
end;
hence thesis;
end;
uniqueness
proof
set SO = the Sorts of FreeOSA(X), NH = OSNat_Hom(ParsedTermsOSA(X),
LCongruence(X));
let A,B be Subset of SO.s;
assume that
A8: for x be object holds x in A iff ex a be object st a in X.s & x = (NH.s
).root-tree [a,s] and
A9: for x be object holds x in B iff ex a be object st a in X.s & x = (NH.s
).root-tree [a,s];
thus A c= B
proof
let x be object;
assume x in A;
then ex a be object st a in X.s & x = (NH.s).root-tree [a,s] by A8;
hence thesis by A9;
end;
let x be object;
assume x in B;
then ex a be object st a in X.s & x = (NH.s).root-tree [a,s] by A9;
hence thesis by A8;
end;
end;
registration
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
cluster OSFreeGen(s,X) -> non empty;
coherence
proof
set NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X));
defpred P[set] means ex a be set st a in X.s & $1 = (NH.s).(root-tree [a,s
]);
consider x being object such that
A1: x in X.s by XBOOLE_0:def 1;
P[(NH.s).root-tree [x,s]] by A1;
hence thesis by Def25;
end;
end;
theorem Th30:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, s be Element of S holds OSFreeGen(s,X) = { (OSNat_Hom(
ParsedTermsOSA(X),LCongruence(X)).s).root-tree t where t is Symbol of DTConOSA(
X): t in Terminals DTConOSA(X) & t`2 = s}
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
set D = DTConOSA(X), NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X)), A = {
(NH.s).root-tree t where t is Symbol of D : t in Terminals D & t`2 = s};
thus OSFreeGen(s,X) c= A
proof
let x be object;
assume x in OSFreeGen(s,X);
then consider a be object such that
A1: a in X.s and
A2: x = (NH.s).root-tree [a,s] by Def25;
A3: [a,s] in Terminals D by A1,Th4;
then reconsider t = [a,s] as Symbol of D;
t`2 = s;
hence thesis by A2,A3;
end;
let x be object;
assume x in A;
then consider t be Symbol of D such that
A4: x = (NH.s).root-tree t and
A5: t in Terminals D and
A6: t`2 = s;
consider s1 be Element of S, a be set such that
A7: a in X.s1 and
A8: t = [a,s1] by A5,Th4;
s = s1 by A6,A8;
hence thesis by A4,A7,A8,Def25;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func OSFreeGen(X) -> OSGeneratorSet of FreeOSA(X) means
:Def26:
for s be Element of S holds it.s = OSFreeGen(s,X);
existence
proof
deffunc F(Element of S) = OSFreeGen($1,X);
set FM = FreeOSA(X), D = DTConOSA(X), PTA = ParsedTermsOSA(X), SO = the
Sorts of FreeOSA(X), NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X));
reconsider NH1 = NH as ManySortedFunction of PTA,FM;
A1: NH1 is order-sorted by OSALG_4:15;
reconsider SOS = SO as OrderSortedSet of S;
consider f be Function such that
A2: dom f = the carrier of S & for s be Element of S holds f.s = F(s)
from FUNCT_1:sch 4;
reconsider f as ManySortedSet of the carrier of S by A2,PARTFUN1:def 2
,RELAT_1:def 18;
A3: f c= the Sorts of FM
proof
let x be object;
assume x in the carrier of S;
then reconsider s = x as SortSymbol of S;
f.s = OSFreeGen(s,X) by A2;
hence thesis;
end;
then reconsider f as MSSubset of FM by PBOOLE:def 18;
OSCl f c= SOS by A3,OSALG_2:8;
then OSCl f is ManySortedSubset of the Sorts of FM by PBOOLE:def 18;
then reconsider O = OSCl f as OSSubset of FM by OSALG_2:def 2;
O is OSSubset of GenOSAlg(O) by OSALG_2:def 12;
then
A4: O c= the Sorts of GenOSAlg(O) by PBOOLE:def 18;
f c= O by OSALG_2:7;
then
A5: f c= the Sorts of GenOSAlg(O) by A4,PBOOLE:13;
A6: NH1 is_epimorphism PTA, FM by OSALG_4:15;
then
A7: NH1 is "onto";
A8: NH1 is_homomorphism PTA,FM by A6;
A9: the Sorts of GenOSAlg(O) = the Sorts of FM
proof
defpred P[set] means for s1 being Element of S st $1 in dom (NH1.s1)
holds (NH1.s1).$1 in (the Sorts of GenOSAlg(O)).s1;
reconsider O2 = (the Sorts of GenOSAlg(O)) as OrderSortedSet of S by
OSALG_1:17;
the Sorts of GenOSAlg(O) is MSSubset of FM by MSUALG_2:def 9;
then
A10: the Sorts of GenOSAlg(O) c= the Sorts of FM by PBOOLE:def 18;
A11: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==>
roots ts & for t being DecoratedTree of the carrier of D st t in rng ts holds P
[t] holds P[nt-tree ts]
proof
set G = GenOSAlg(O), OU = [:the carrier' of S,{the carrier of S}:] \/
Union (coprod (X qua ManySortedSet of S));
let nt be Symbol of D, ts be FinSequence of TS(D);
assume that
A12: nt ==> roots ts and
A13: for t being DecoratedTree of the carrier of D st t in rng ts
holds P[t];
[nt,roots ts] in the Rules of D by A12,LANG1:def 1;
then reconsider rt = roots ts as Element of OU* by ZFMISC_1:87;
reconsider sy = nt as Element of OU;
[sy,rt] in OSREL(X) by A12,LANG1:def 1;
then sy in [:the carrier' of S,{the carrier of S}:] by Def4;
then consider
o being Element of the carrier' of S, x2 being Element of {
the carrier of S} such that
A14: sy = [o,x2] by DOMAIN_1:1;
let s1 be Element of S;
assume (nt-tree ts) in dom (NH1.s1);
then (nt-tree ts) in (the Sorts of PTA).s1;
then (nt-tree ts) in ParsedTerms(X,s1) by Def8;
then consider a1 being Element of TS D such that
A15: (nt-tree ts) = a1 and
A16: (ex s2 being Element of S, x be object st s2 <= s1 & x in X.s2 &
a1 = root-tree [x,s2]) or ex o be OperSymbol of S st [o,the carrier of S] = a1.
{} & the_result_sort_of o <= s1;
A17: Seg len rt = dom rt by FINSEQ_1:def 3;
A18: x2 = the carrier of S by TARSKI:def 1;
not ex s2 being Element of S, x be set st s2 <= s1 & x in X.s2 &
a1 = root-tree [x,s2]
proof
given s2 being Element of S, x be set such that
s2 <= s1 and
x in X.s2 and
A19: a1 = root-tree [x,s2];
[x,s2] = (nt-tree ts).{} by A15,A19,TREES_4:3
.= [o,x2] by A14,TREES_4:def 4;
then s2 = the carrier of S by A18,XTUPLE_0:1;
then s2 in s2;
hence contradiction;
end;
then consider o1 being OperSymbol of S such that
A20: [o1,the carrier of S] = a1.{} and
A21: the_result_sort_of o1 <= s1 by A16;
set ar = the_arity_of o, rs = the_result_sort_of o;
A22: dom (roots ts) = dom ts by TREES_3:def 18;
[nt,roots ts] in OSREL(X) by A12,LANG1:def 1;
then
A23: len rt = len ar by A14,A18,Th2;
A24: Seg len ar = dom ar by FINSEQ_1:def 3;
reconsider B = the Sorts of G as MSSubset of FM by MSUALG_2:def 9;
A25: dom (B * ar) = dom ar by PARTFUN1:def 2;
set AR = the Arity of S, RS = the ResultSort of S, BH = B# * the Arity
of S;
AR.o = ar by MSUALG_1:def 1;
then
A26: BH.o = product (B * ar) by MSAFREE:1;
reconsider rs1 = rs,s11 = s1 as Element of S;
reconsider B1 = B as OrderSortedSet of S by OSALG_1:17;
A27: RS.o = rs by MSUALG_1:def 2;
B is opers_closed by MSUALG_2:def 9;
then B is_closed_on o by MSUALG_2:def 6;
then
A28: rng ((Den(o,FM))|(BH.o)) c= (B * RS).o by MSUALG_2:def 5;
A29: OSSym(o,X) = [o,the carrier of S];
A30: nt = [o,the carrier of S] by A14,TARSKI:def 1;
then
A31: ts in ((ParsedTerms X)# * (the Arity of S)).o by A12,A29,Th7;
then reconsider ts1 = ts as Element of Args(o,PTA) by MSUALG_1:def 4;
Den(o,PTA) = (PTOper X).o by MSUALG_1:def 6
.= PTDenOp(o,X) by Def10;
then
A32: (Den(o,PTA).ts) = nt-tree ts by A12,A29,A30,Def9;
A33: dom ((the Sorts of PTA) * ar) = dom ar by PARTFUN1:def 2;
A34: for x being object st x in dom (B * ar)
holds (NH1#ts1).x in (B * ar).x
proof
let x be object such that
A35: x in dom (B * ar);
reconsider x1 = x as Nat by A35;
A36: ts.x1 in rng ts by A25,A22,A23,A17,A24,A35,FUNCT_1:def 3;
rng ts c= TS D by FINSEQ_1:def 4;
then reconsider t = ts.x as Element of TS(D) by A36;
ts1.x in ((the Sorts of PTA) * ar).x by A25,A33,A35,MSUALG_3:6;
then ts1.x in (the Sorts of PTA).(ar.x) by A25,A33,A35,FUNCT_1:12;
then ts1.x in (the Sorts of PTA).(ar/.x) by A25,A35,PARTFUN1:def 6;
then ts1.x1 in dom (NH1.(ar/.x1)) by FUNCT_2:def 1;
then
(NH1.(ar/.x1)).t in (the Sorts of GenOSAlg(O)).(ar/.x1) by A13,A36;
then
A37: (NH1.(ar/.x1)).(ts1.x1) in B.(ar.x) by A25,A35,PARTFUN1:def 6;
(NH1#ts1).x1 = (NH1.(ar/.x1)).(ts1.x1) by A25,A22,A23,A17,A24,A35,
MSUALG_3:def 6;
hence thesis by A35,A37,FUNCT_1:12;
end;
NH1#ts1 in Args(o,FM);
then
A38: NH1#ts1 in dom Den(o,FM) by FUNCT_2:def 1;
[o1,the carrier of S] = [o,x2] by A14,A15,A20,TREES_4:def 4;
then
A39: o1 = o by XTUPLE_0:1;
then
A40: B1.rs1 c= B1.s11 by A21,OSALG_1:def 16;
dom (NH1#ts1) = dom ar by MSUALG_3:6;
then (NH1#ts1) in BH.o by A26,A25,A34,CARD_3:9;
then Den(o,FM).(NH1#ts1) in rng ((Den(o,FM))|(BH.o)) by A38,FUNCT_1:50;
then
A41: Den(o,FM).(NH1#ts1) in (B * RS).o by A28;
ts in Args(o,PTA) by A31,MSUALG_1:def 4;
then Den(o,PTA).ts in Result(o,PTA) by FUNCT_2:5;
then Den(o,PTA).ts in ((the Sorts of PTA) * RS).o by MSUALG_1:def 5;
then Den(o,PTA).ts in (the Sorts of PTA).rs by A27,FUNCT_2:15;
then (nt-tree ts) in dom (NH1.rs) by A32,FUNCT_2:def 1;
then
A42: (NH1.s11).(nt-tree ts) = (NH1.rs1).(nt-tree ts) by A1,A21,A39;
(NH1.rs).(Den(o,PTA).ts1) = Den(o,FM).(NH1#ts1) by A8;
then (NH1.rs).(nt-tree ts) in B.rs by A27,A32,A41,FUNCT_2:15;
hence thesis by A40,A42;
end;
let x be Element of S;
set s = x;
A43: for s be Symbol of D st s in Terminals D holds P[root-tree s]
proof
let t be Symbol of D;
assume
A44: t in Terminals D;
let s1 be Element of S;
assume (root-tree t) in dom (NH1.s1);
then root-tree t in (the Sorts of PTA).s1;
then (root-tree t) in ParsedTerms(X,s1) by Def8;
then consider a being Element of TS(D) such that
A45: root-tree t = a and
A46: (ex s2 being Element of S, x be object st s2 <= s1 & x in X.s2 &
a = root-tree [x,s2]) or ex o be OperSymbol of S st [o,the carrier of S] = a.{}
& the_result_sort_of o <= s1;
not ex o be OperSymbol of S st [o,the carrier of S] = a.{} &
the_result_sort_of o <= s1
proof
consider s3 being Element of S, x3 being set such that
x3 in X.s3 and
A47: t = [x3,s3] by A44,Th4;
given o be OperSymbol of S such that
A48: [o,the carrier of S] = a.{} and
the_result_sort_of o <= s1;
[o,the carrier of S] = t by A45,A48,TREES_4:3;
then the carrier of S = s3 by A47,XTUPLE_0:1;
then s3 in s3;
hence contradiction;
end;
then consider s2 being Element of S, x be set such that
A49: s2 <= s1 and
A50: x in X.s2 and
A51: a = root-tree [x,s2] by A46;
reconsider s11 = s1, s21 = s2 as Element of S;
a in ParsedTerms(X,s2) by A50,A51;
then a in (ParsedTerms(X)).s2 by Def8;
then (root-tree [x,s2]) in dom (NH1.s2) by A51,FUNCT_2:def 1;
then
A52: (NH1.s21).(root-tree [x,s2]) = (NH1.s11).(root-tree [x,s2] ) by A1,A49;
f.s2 c= (the Sorts of GenOSAlg(O)).s2 by A5;
then
A53: OSFreeGen(s2,X) c= (the Sorts of GenOSAlg(O)).s2 by A2;
O2.s21 c= O2.s11 by A49,OSALG_1:def 16;
then
A54: OSFreeGen(s2,X) c= (the Sorts of GenOSAlg(O)).s1 by A53;
(NH1.s2).(root-tree [x,s2]) in OSFreeGen(s2,X) by A50,Def25;
hence thesis by A45,A51,A52,A54;
end;
A55: for t being DecoratedTree of the carrier of D st t in TS D holds P
[t] from DTCONSTR:sch 7(A43,A11);
thus (the Sorts of GenOSAlg(O)).s c= (the Sorts of FM).s
by A10;
let x1 be object;
assume
A56: x1 in (the Sorts of FM).s;
A57: (the Sorts of PTA).s = ParsedTerms(X,s) by Def8
.= {a where a is Element of TS(D): (ex s2 being Element of S, x be
object
st s2 <= s & x in X.s2 & a = root-tree [x,s2]) or ex o1 be OperSymbol of S
st [o1,the carrier of S] = a.{} & the_result_sort_of o1 <= s};
rng(NH1.x) = (the Sorts of FM).x by A7;
then consider x2 being object such that
A58: x2 in dom (NH1.s) and
A59: x1 = (NH1.s).x2 by A56,FUNCT_1:def 3;
x2 in (the Sorts of PTA).s by A58;
then ex a be Element of TS(D) st a = x2 &( (ex s2 being Element of S
, x be object st s2 <= s & x in X.s2 & a = root-tree [x,s2])
or ex o1 be
OperSymbol of S st [o1,the carrier of S]=a.{} & the_result_sort_of o1 <= s) by
A57;
hence thesis by A55,A58,A59;
end;
f is OSGeneratorSet of FM
proof
let O1 be OSSubset of FM;
assume O1 = OSCl f;
hence thesis by A9;
end;
then reconsider f as OSGeneratorSet of FM;
take f;
thus thesis by A2;
end;
uniqueness
proof
let A,B be OSGeneratorSet of FreeOSA(X);
assume that
A60: for s be Element of S holds A.s = OSFreeGen(s,X) and
A61: for s be Element of S holds B.s = OSFreeGen(s,X);
for i be object st i in the carrier of S holds A.i = B.i
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as SortSymbol of S;
A.s = OSFreeGen(s,X) by A60;
hence thesis by A61;
end;
hence thesis;
end;
end;
theorem Th31:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S holds OSFreeGen(X) is non-empty
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
let x be object;
assume x in the carrier of S;
then reconsider s = x as Element of S;
(OSFreeGen(X)).s = OSFreeGen(s,X) by Def26;
hence thesis;
end;
registration
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
cluster OSFreeGen(X) -> non-empty;
coherence by Th31;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, R be OSCongruence of ParsedTermsOSA(X), t be Element of TS DTConOSA(X);
func OSClass(R,t) -> Element of OSClass(R,LeastSort t) means
:Def27:
for s
being Element of S, x being Element of (the Sorts of ParsedTermsOSA(X)).s st t
= x holds it = OSClass(R,x);
existence
proof
set LS = LeastSort t, PTA = ParsedTermsOSA(X);
reconsider x1 = t as Element of (the Sorts of PTA).LS by Def12;
take OSClass(R,x1);
let s being Element of S, x being Element of (the Sorts of ParsedTermsOSA(
X)).s such that
A1: t = x;
LS <= s by A1,Def12;
hence thesis by A1,OSALG_4:13;
end;
uniqueness
proof
set LS = LeastSort t, PTA = ParsedTermsOSA(X);
reconsider x1 = t as Element of (the Sorts of PTA).LS by Def12;
let O1,O2 be Element of OSClass(R,LeastSort t) such that
A2: for s being Element of S, x being Element of (the Sorts of
ParsedTermsOSA(X)).s st t = x holds O1 = OSClass(R,x) and
A3: for s being Element of S, x being Element of (the Sorts of
ParsedTermsOSA(X)).s st t = x holds O2 = OSClass(R,x);
thus O1 = OSClass(R,x1) by A2
.= O2 by A3;
end;
end;
theorem Th32:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, R be OSCongruence of ParsedTermsOSA(X), t be Element of TS
DTConOSA(X) holds t in OSClass(R,t)
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, R be OSCongruence of ParsedTermsOSA(X), t be Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X);
reconsider x = t as Element of (the Sorts of PTA).(LeastSort t) by Def12;
OSClass(R,t) = OSClass(R,x) by Def27
.= Class( CompClass(R, CComp(LeastSort t)), x);
hence thesis by EQREL_1:20,OSALG_4:5;
end;
theorem Th33:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, s be Element of S, t being Element of TS DTConOSA(X), x,x1
being set st x in X.s & t = root-tree [x,s] holds x1 in OSClass(PTCongruence(X)
,t) iff x1 = t
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S, t being Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), D = DTConOSA(X),R= PTCongruence(X);
reconsider y = t as Element of (the Sorts of PTA).(LeastSort t) by Def12;
let x,x1 being set such that
A1: x in X.s and
A2: t = root-tree [x,s];
A3: [x,s] in Terminals D by A1,Th4;
then reconsider sy = [x,s] as Symbol of D;
A4: OSClass(R,t) = OSClass(PTCongruence X,y) by Def27
.= proj1((PTClasses X).y) by Th25;
A5: (PTClasses X).(root-tree sy) = @(sy) by A3,Def21
.= {[root-tree sy,s1] where s1 is Element of S: ex s2 be Element of S,
x2 be set st x2 in X.s2 & sy = [x2,s2] & s2 <= s1};
hereby
assume x1 in OSClass(R,t);
then consider z being object such that
A6: [x1,z] in (PTClasses X).y by A4,XTUPLE_0:def 12;
ex s1 being Element of S st [x1,z] = [root-tree sy,s1] & ex s2 be
Element of S, x2 be set st x2 in X.s2 & sy = [x2,s2] & s2 <= s1 by A2,A5,A6;
hence x1 = t by A2,XTUPLE_0:1;
end;
assume x1 = t;
then [x1,s] in (PTClasses X).y by A1,A2,A5;
hence thesis by A4,XTUPLE_0:def 12;
end;
theorem Th34:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, R be OSCongruence of ParsedTermsOSA(X), t1,t2 be Element of
TS DTConOSA(X) holds t2 in OSClass(R,t1) iff OSClass(R,t1) = OSClass(R,t2)
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, R be OSCongruence of ParsedTermsOSA(X), t1,t2 be Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), SPTA = (the Sorts of PTA);
reconsider x1=t1 as Element of SPTA.(LeastSort t1) by Def12;
set CC1 = CComp(LeastSort t1), CR1 = CompClass(R,CC1);
A1: OSClass(R,t1) = OSClass(R,x1) by Def27
.= Class( CompClass(R, CComp(LeastSort t1)), x1);
hereby
assume t2 in OSClass(R,t1);
then [t2,x1] in CR1 by A1,EQREL_1:19;
then consider s2 being Element of S such that
s2 in CC1 and
A2: [t2,x1] in R.s2 by OSALG_4:def 9;
reconsider x11=x1,x22=t2 as Element of SPTA.s2 by A2,ZFMISC_1:87;
thus OSClass(R,t1) = OSClass(R,x11) by Def27
.= OSClass(R,x22) by A2,OSALG_4:12
.= OSClass(R,t2) by Def27;
end;
assume OSClass(R,t1) = OSClass(R,t2);
hence thesis by Th32;
end;
theorem Th35:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, R1,R2 be OSCongruence of ParsedTermsOSA(X), t be Element of
TS DTConOSA(X) holds R1 c= R2 implies OSClass(R1,t) c= OSClass(R2,t)
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, R1,R2 be OSCongruence of ParsedTermsOSA(X), t be Element of TS DTConOSA(X);
set s = LeastSort t, PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D =
DTConOSA(X);
set CC1 = CComp(s), CR1 = CompClass(R1,CC1);
reconsider xa=t as Element of SPTA.s by Def12;
assume
A1: R1 c= R2;
A2: OSClass(R1,t) = OSClass(R1,xa) by Def27
.= Class( CompClass(R1, CComp(s)), xa);
let x be object;
assume x in OSClass(R1,t);
then [x,xa] in CR1 by A2,EQREL_1:19;
then consider s1 being Element of S such that
s1 in CC1 and
A3: [x,xa] in R1.s1 by OSALG_4:def 9;
reconsider xa = t, xb = x as Element of SPTA.s1 by A3,ZFMISC_1:87;
A4: R1.s1 c= R2.s1 by A1;
x in SPTA.s1 by A3,ZFMISC_1:87;
then reconsider t1 = x as Element of TS D by Th15;
OSClass(R2,t1) = OSClass(R2,xb) by Def27
.= OSClass(R2,xa) by A3,A4,OSALG_4:12
.= OSClass(R2,t) by Def27;
hence thesis by Th34;
end;
theorem Th36:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, s be Element of S, t being Element of TS DTConOSA(X), x,x1
being set st x in X.s & t = root-tree [x,s] holds x1 in OSClass(LCongruence(X),
t) iff x1 = t
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S, t being Element of TS DTConOSA(X);
set R = LCongruence(X),R1 = PTCongruence(X);
let x,x1 being set such that
A1: x in X.s and
A2: t = root-tree [x,s];
R c= R1 by Def17;
then OSClass(R,t) c= OSClass(R1,t) by Th35;
hence x1 in OSClass(R,t) implies x1 = t by A1,A2,Th33;
assume x1 = t;
hence thesis by Th32;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, A be non-empty ManySortedSet of the carrier of S, F be ManySortedFunction of
PTVars(X), A, t be Symbol of DTConOSA(X);
assume
A1: t in Terminals (DTConOSA(X));
func pi(F,A,t) -> Element of Union A means
:Def28:
for f be Function st f = F.(t`2) holds it = f.(root-tree t);
existence
proof
set FG = PTVars(X), D = DTConOSA(X);
consider s be Element of S, x be set such that
x in X.s and
A2: t = [x,s] by A1,Th4;
FG.s = PTVars(s,X) by Def24;
then
A3: dom (F.s) = PTVars(s,X) by FUNCT_2:def 1
.= {root-tree tt where tt is Symbol of D: tt in Terminals D & tt`2 = s
} by Th28;
t`2 = s by A2;
then root-tree t in dom (F.s) by A1,A3;
then
A4: (F.s).(root-tree t) in rng (F.s) by FUNCT_1:def 3;
dom A = the carrier of S by PARTFUN1:def 2;
then
A5: A.s in rng A by FUNCT_1:def 3;
rng (F.s) c= A.s by RELAT_1:def 19;
then (F.s).(root-tree t) in union rng A by A4,A5,TARSKI:def 4;
then reconsider eu = (F.s).(root-tree t) as Element of Union A by
CARD_3:def 4;
take eu;
let f be Function;
assume f = F.(t`2);
hence thesis by A2;
end;
uniqueness
proof
consider s be Element of S, x be set such that
x in X.s and
A6: t = [x,s] by A1,Th4;
reconsider f = F.s as Function;
let a,b be Element of Union A;
assume that
A7: for f be Function st f = F.(t`2) holds a = f.(root-tree t) and
A8: for f be Function st f = F.(t`2) holds b = f.(root-tree t);
A9: f = F.(t`2) by A6;
then a = f.(root-tree t) by A7;
hence thesis by A8,A9;
end;
end;
theorem Th37:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S, U1 be monotone non-empty OSAlgebra of S, f be
ManySortedFunction of PTVars(X),the Sorts of U1 ex h be ManySortedFunction of
ParsedTermsOSA(X),U1 st h is_homomorphism ParsedTermsOSA(X),U1 & h is
order-sorted & h || PTVars(X) = f
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set D = DTConOSA(X), PTA = ParsedTermsOSA(X), PV = PTVars(X), SPTA = the
Sorts of PTA;
let U1 be non-empty monotone OSAlgebra of S, F be ManySortedFunction of PV,
the Sorts of U1;
set SA =the Sorts of PTA, AR = the Arity of S, S1 = the Sorts of U1, O = the
carrier' of S, RS = the ResultSort of S;
reconsider SAO=SA,S1O=S1 as OrderSortedSet of S by OSALG_1:17;
deffunc TermVal(Symbol of D) = pi(F,the Sorts of U1,$1);
deffunc NTermVal(Symbol of D,set,FinSequence) = pi(@(X,$1),U1, $3);
consider G being Function of TS(D), Union (the Sorts of U1) such that
A1: for t being Symbol of D st t in Terminals D holds G.(root-tree t) =
TermVal(t) and
A2: for nt be Symbol of D, ts be FinSequence of TS(D) st nt ==> roots ts
holds G.(nt-tree ts) = NTermVal(nt,roots ts,G * ts) from DTCONSTR:sch 8;
deffunc F(object) = G | ((the Sorts of PTA).$1);
consider h be Function such that
A3: dom h = the carrier of S & for s be object st s in the carrier of S
holds h.s = F(s) from FUNCT_1:sch 3;
reconsider h as ManySortedSet of the carrier of S by A3,PARTFUN1:def 2
,RELAT_1:def 18;
for s be object st s in dom h holds h.s is Function
proof
let s be object;
assume s in dom h;
then h.s = G | ((the Sorts of PTA).s) by A3;
hence thesis;
end;
then reconsider h as ManySortedFunction of the carrier of S by FUNCOP_1:def 6
;
defpred P[set] means for s be Element of S st $1 in (the Sorts of PTA).s
holds (h.s).$1 in (the Sorts of U1).s;
A4: for nt being Symbol of D, ts being FinSequence of TS(D) st nt ==> roots
ts & for t being DecoratedTree of the carrier of D st t in rng ts holds P[t]
holds P[nt-tree ts]
proof
let nt be Symbol of D, ts be FinSequence of TS(D);
assume that
A5: nt ==> roots ts and
A6: for t being DecoratedTree of the carrier of D st t in rng ts holds P[t];
set p = G * ts, o = @(X,nt), ar = the_arity_of o, rs = the_result_sort_of
o, OU = [:the carrier' of S,{the carrier of S}:] \/ Union (coprod (X qua
ManySortedSet of S)), rt = roots ts;
A7: [o,the carrier of S] = nt by A5,Def15;
then
A8: [[o,the carrier of S],rt] in the Rules of D by A5,LANG1:def 1;
let s be Element of S;
reconsider s2=s as Element of S;
assume
A9: nt-tree ts in SA.s;
consider op being OperSymbol of S such that
A10: nt = [op,the carrier of S] and
ts in Args(op,PTA) and
nt-tree ts = Den(op,PTA).ts and
A11: for s1 being Element of S holds nt-tree ts in SA.s1 iff
the_result_sort_of op <= s1 by A5,Th12;
op = o by A5,A10,Def15;
then rs <= s by A9,A11;
then
A12: S1O.rs c= S1O.s2 by OSALG_1:def 16;
A13: rng Den(o,U1) c= Result(o,U1) by RELAT_1:def 19;
A14: dom(S1* ar) = dom ar by PARTFUN1:def 2;
A15: [o,the carrier of S] = OSSym(o,X);
then
A16: (PTDenOp(o,X)).ts = nt-tree ts by A5,A7,Def9;
A17: dom(SA* ar) = dom ar by PARTFUN1:def 2;
dom (PTDenOp (o,X)) = ((ParsedTerms X)# * AR).o by FUNCT_2:def 1;
then ts in dom (PTDenOp(o,X)) by A5,A7,A15,Th7;
then
A18: nt-tree ts in rng (PTDenOp(o,X)) by A16,FUNCT_1:def 3;
A19: h.rs = (G | (SA.rs)) by A3;
A20: Seg len ar = dom ar by FINSEQ_1:def 3;
A21: rng ar c= the carrier of S by FINSEQ_1:def 4;
A22: ar = AR.o by MSUALG_1:def 1;
A23: dom rt = dom ts by TREES_3:def 18;
reconsider rt as Element of OU* by A8,ZFMISC_1:87;
A24: len rt = len ar by A8,Th2;
A25: dom rt = Seg len rt by FINSEQ_1:def 3;
A26: dom p = dom ts by FINSEQ_3:120;
then
A27: dom p = dom (S1 * ar) by A23,A14,A8,A25,A20,Th2;
A28: for x being object st x in dom (S1 * ar) holds p.x in (S1 * ar).x
proof
let x be object;
assume
A29: x in dom (S1 * ar);
then reconsider n = x as Nat;
A30: ts.n in rng ts by A23,A14,A24,A25,A20,A29,FUNCT_1:def 3;
rng ts c= TS D by FINSEQ_1:def 4;
then reconsider t = ts.n as Element of TS(D) by A30;
A31: p.n = G.(ts.n) by A27,A29,FINSEQ_3:120;
ar.x in rng ar by A14,A29,FUNCT_1:def 3;
then reconsider s = ar.x as Element of S by A21;
A32: h.s = G | (SA.s) by A3;
dom SA = the carrier of S by PARTFUN1:def 2;
then
A33: SA.s in rng SA by FUNCT_1:def 3;
dom G = TS D by FUNCT_2:def 1
.= union rng SA by Th8;
then
A34: dom (h.s) = SA.s by A32,A33,RELAT_1:62,ZFMISC_1:74;
ts in ((ParsedTerms X)# * AR).o by A5,A7,A15,Th7;
then ts in product ((ParsedTerms X) * ar) by A22,MSAFREE:1;
then ts.x in ((ParsedTerms X) * ar).x by A14,A17,A29,CARD_3:9;
then
A35: ts.x in (ParsedTerms X).(ar.x) by A14,A17,A29,FUNCT_1:12;
then (h.s).t in S1.s by A6,A30;
then G.t in S1.s by A35,A32,A34,FUNCT_1:47;
hence thesis by A29,A31,FUNCT_1:12;
end;
set ppi = pi(o,U1,p);
A36: dom Den(o,U1) = Args(o,U1) by FUNCT_2:def 1;
A37: dom RS = O by FUNCT_2:def 1;
Args(o,U1) = (S1# * AR).o by MSUALG_1:def 4
.= product (S1 * ar) by A22,MSAFREE:1;
then
A38: p in Args(o,U1) by A26,A23,A14,A24,A25,A20,A28,CARD_3:9;
then pi(o,U1,p) = Den(o,U1).p by MSAFREE:def 21;
then ppi in rng Den(o,U1) by A38,A36,FUNCT_1:def 3;
then
A39: ppi in Result(o,U1) by A13;
h.s = (G | (SA.s)) by A3;
then
A40: (h.s).(nt-tree ts) = G.(nt-tree ts) by A9,FUNCT_1:49;
A41: rng RS c= the carrier of S by RELAT_1:def 19;
dom SA = the carrier of S by PARTFUN1:def 2;
then
A42: dom (SA * RS) = dom RS by A41,RELAT_1:27;
dom S1 = the carrier of S by PARTFUN1:def 2;
then
A43: dom (S1 *RS) = dom RS by A41,RELAT_1:27;
rng (PTDenOp (o,X)) c= ((ParsedTerms X) * RS).o by RELAT_1:def 19;
then nt-tree ts in (SA * RS).o by A18;
then nt-tree ts in SA.(RS.o) by A37,A42,FUNCT_1:12;
then
A44: nt-tree ts in SA.rs by MSUALG_1:def 2;
G.(nt-tree ts) = ppi by A2,A5;
then
A45: ppi = (G | (SA.rs)).(nt-tree ts) by A44,FUNCT_1:49;
Result(o,U1) = (S1 *RS).o by MSUALG_1:def 5
.= S1.(RS.o) by A43,A37,FUNCT_1:12
.= S1.rs by MSUALG_1:def 2;
then (h.rs).(nt-tree ts) in S1.s by A39,A45,A19,A12;
hence thesis by A44,A19,A40,FUNCT_1:49;
end;
A46: for t being Symbol of D st t in Terminals D holds P[root-tree t]
proof
let t be Symbol of D;
assume
A47: t in Terminals D;
then consider s be Element of S, x be set such that
A48: x in X.s and
A49: t = [x,s] by Th4;
reconsider s as SortSymbol of S;
set E = {root-tree tt where tt is Symbol of D: tt in Terminals D & tt`2 =
s}, a = root-tree t;
A50: t`2 = s by A49;
then
A51: a in E by A47;
reconsider f = F.s as Function of PV.s,S1.s;
A52: dom f = PV.s by FUNCT_2:def 1;
A53: rng f c= S1.s by RELAT_1:def 19;
A54: E = PTVars(s,X) by Th28;
then PV.s = E by Def24;
then f.a in rng f by A51,A52,FUNCT_1:def 3;
then
A55: f.a in S1.s by A53;
let s1 be Element of S;
reconsider s0=s,s11=s1 as Element of S;
assume
A56: a in SA.s1;
then s <= s1 by A48,A49,Th10;
then
A57: S1O.s0 c= S1O.s11 by OSALG_1:def 16;
A58: h.s = G | (SA.s) by A3;
then
A59: (h.s).a = G.a by A51,A54,FUNCT_1:49
.= pi(F,S1,t) by A1,A47
.= f.a by A47,A50,Def28;
h.s1 = G | (SA.s1) by A3;
then (h.s1).a = G.a by A56,FUNCT_1:49
.= f.a by A51,A54,A58,A59,FUNCT_1:49;
hence thesis by A55,A57;
end;
A60: for t being DecoratedTree of the carrier of D st t in TS(D) holds P[t]
from DTCONSTR:sch 7(A46,A4);
for s be object st s in the carrier of S holds h.s is Function of (the
Sorts of PTA).s, (the Sorts of U1).s
proof
let x be object;
assume x in the carrier of S;
then reconsider s = x as Element of S;
A61: dom G = TS D by FUNCT_2:def 1
.= union rng SA by Th8;
dom SA = the carrier of S by PARTFUN1:def 2;
then
A62: SA.s in rng SA by FUNCT_1:def 3;
A63: h.s = G | (SA.s) by A3;
then
A64: dom (h.s) = SA.s by A61,A62,RELAT_1:62,ZFMISC_1:74;
A65: SA.s c= dom G by A61,A62,ZFMISC_1:74;
rng (h.s) c= S1.s
proof
let a be object;
assume a in rng (h.s);
then consider T be object such that
A66: T in dom (h.s) and
A67: (h.s).T = a by FUNCT_1:def 3;
reconsider T as Element of TS(D) by A65,A64,A66,FUNCT_2:def 1;
T in SA.s by A63,A61,A62,A66,RELAT_1:62,ZFMISC_1:74;
hence thesis by A60,A67;
end;
hence thesis by A64,FUNCT_2:def 1,RELSET_1:4;
end;
then reconsider h as ManySortedFunction of PTA,U1 by PBOOLE:def 15;
take h;
thus h is_homomorphism PTA,U1
proof
A68: dom SA = the carrier of S by PARTFUN1:def 2;
rng RS c= the carrier of S by RELAT_1:def 19;
then
A69: dom (SA * RS) = dom RS by A68,RELAT_1:27;
let op be Element of the carrier' of S such that
Args(op,PTA) <> {};
reconsider o=op as OperSymbol of S;
let x be Element of Args(op,PTA);
set rs = the_result_sort_of o, DA = Den(o,PTA), D1 = Den(o,U1), OU = [:the
carrier' of S,{the carrier of S}:] \/ Union (coprod (X qua ManySortedSet of S))
, ar = the_arity_of o;
A70: ar = AR.o by MSUALG_1:def 1;
A71: Args(o,PTA) = ((ParsedTerms X)# * AR).o by MSUALG_1:def 4;
then reconsider p = x as FinSequence of TS(D) by Th5;
A72: OSSym(o,X) ==> roots p by A71,Th7;
then
A73: @(X,OSSym(o,X)) = o by Def15;
A74: dom (G *p) = dom p by FINSEQ_3:120;
A75: x in ((ParsedTerms X)# * AR).o by A71;
A76: for a be object st a in dom p holds (G*p).a = (h#x).a
proof
set rt = roots p;
let a be object;
A77: dom(SA* ar) = dom ar by PARTFUN1:def 2;
A78: [[o,the carrier of S],rt] in the Rules of D by A72,LANG1:def 1;
assume
A79: a in dom p;
then reconsider n = a as Nat;
A80: (h#x).n = (h.(ar/.n)).(x.n) by A79,MSUALG_3:def 6;
A81: (G*p).n = G.(x.n) by A74,A79,FINSEQ_3:120;
A82: h.(ar/.n) = G | (SA.(ar/.n)) by A3;
A83: dom rt = dom p by TREES_3:def 18;
reconsider rt as Element of OU* by A78,ZFMISC_1:87;
A84: len rt = len ar by A78,Th2;
A85: Seg len rt = dom rt by FINSEQ_1:def 3;
A86: Seg len ar = dom ar by FINSEQ_1:def 3;
p in product((ParsedTerms X) * ar) by A75,A70,MSAFREE:1;
then
A87: p.n in ((ParsedTerms X) * ar).n by A79,A77,A83,A84,A85,A86,CARD_3:9;
((ParsedTerms X) * ar).n = SA.(ar.n) by A79,A77,A83,A84,A85,A86,
FUNCT_1:12
.= SA.(ar/.n) by A79,A83,A84,A85,A86,PARTFUN1:def 6;
hence thesis by A81,A80,A82,A87,FUNCT_1:49;
end;
dom (h#x) = dom ar by MSUALG_3:6;
then
A88: G*p = h#x by A74,A76,FUNCT_1:2,MSUALG_3:6;
A89: h.rs = G | (SA.rs) by A3;
A90: rng (PTDenOp (o,X)) c= ((ParsedTerms X) * RS).o by RELAT_1:def 19;
A91: dom (PTDenOp (o,X)) = ((ParsedTerms X)# * AR).o by FUNCT_2:def 1;
(PTDenOp(o,X)).p = (OSSym(o,X))-tree p by A72,Def9;
then (OSSym(o,X))-tree p in rng (PTDenOp(o,X)) by A71,A91,FUNCT_1:def 3;
then
A92: (OSSym(o,X))-tree p in (SA * RS).o by A90;
dom SA = the carrier of S by PARTFUN1:def 2;
then
A93: SA.rs in rng SA by FUNCT_1:def 3;
dom RS = O by FUNCT_2:def 1;
then (OSSym(o,X))-tree p in SA.(RS.o) by A69,A92,FUNCT_1:12;
then
A94: (OSSym(o,X))-tree p in SA.rs by MSUALG_1:def 2;
dom G = TS D by FUNCT_2:def 1
.= union rng SA by Th8;
then
A95: dom (h.rs) = SA.rs by A89,A93,RELAT_1:62,ZFMISC_1:74;
DA = (PTOper(X)).o by MSUALG_1:def 6
.= PTDenOp(o,X) by Def10;
then DA.x = (OSSym(o,X))-tree p by A72,Def9;
then (h.rs).(DA.x) = G.((OSSym(o,X))-tree p) by A94,A89,A95,FUNCT_1:47
.= pi(@(X,OSSym(o,X)),U1,G*p) by A2,A72
.= D1.(h#x) by A73,A88,MSAFREE:def 21;
hence thesis;
end;
thus h is order-sorted
proof
let s1,s2 being Element of S;
assume s1 <= s2;
then
A96: SAO.s1 c= SAO.s2 by OSALG_1:def 16;
let a1 being set such that
A97: a1 in dom (h.s1);
A98: a1 in SAO.s1 by A97;
then a1 in SA.s2 by A96;
hence a1 in dom (h.s2) by FUNCT_2:def 1;
A99: h.s2 = G | (SPTA.s2) by A3;
h.s1 = G | (SPTA.s1) by A3;
hence (h.s1).a1 = G.a1 by A97,FUNCT_1:49
.= (h.s2).a1 by A96,A98,A99,FUNCT_1:49;
end;
for x being object st x in the carrier of S holds (h || PV).x = F.x
proof
set hf = h || PV;
let x be object;
assume x in the carrier of S;
then reconsider s = x as Element of S;
A100: dom (h.s) = SA.s by FUNCT_2:def 1;
A101: dom (hf.s) = PV.s by FUNCT_2:def 1;
A102: PV.s = PTVars(s,X) by Def24;
A103: hf.s = (h.s) | (PV.s) by MSAFREE:def 1;
A104: for a be object st a in PV.s holds (hf.s).a = (F.s).a
proof
let a be object;
A105: h.s = G | (SA.s) by A3;
assume
A106: a in PV.s;
then a in {root-tree t where t is Symbol of D: t in Terminals D & t`2 =
s } by A102,Th28;
then consider t be Symbol of D such that
A107: a = root-tree t and
A108: t in Terminals D and
A109: t`2 = s;
thus (hf.s).a = (h.s).a by A103,A101,A106,FUNCT_1:47
.= G.a by A100,A102,A106,A105,FUNCT_1:47
.= pi(F,S1,t) by A1,A107,A108
.= (F.s).a by A107,A108,A109,Def28;
end;
dom (F.s) = PV.s by FUNCT_2:def 1;
hence thesis by A101,A104,FUNCT_1:2;
end;
hence thesis;
end;
:: NH stanbds for NatHom
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S
, s be Element of S;
func NHReverse(s,X) -> Function of OSFreeGen(s,X),PTVars(s,X) means
for t be
Symbol of DTConOSA(X) st (OSNat_Hom(ParsedTermsOSA(X),LCongruence(X)).s).(
root-tree t) in OSFreeGen(s,X) holds it.((OSNat_Hom(ParsedTermsOSA(X),
LCongruence(X)).s).(root-tree t)) = root-tree t;
existence
proof
set A = OSFreeGen(s,X), R = LCongruence(X), PTA = ParsedTermsOSA(X), SPTA
= the Sorts of PTA, NHs = OSNat_Hom(PTA,R,s), D = DTConOSA(X);
set NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X));
defpred P[object,object] means
for t be Symbol of D st $1 = (NH.s).(root-tree t)
holds $2 = root-tree t;
A1: NH.s = OSNat_Hom(PTA,R,s) by OSALG_4:def 22;
A2: for x be object st x in A ex a be object st a in PTVars(s,X) & P[x,a]
proof
let x be object;
assume x in A;
then
x in {(NH.s).(root-tree t) where t is Symbol of D: t in Terminals D
& t`2 = s} by Th30;
then consider t be Symbol of D such that
A3: x = (NH.s).(root-tree t) and
A4: t in Terminals D and
A5: t`2 = s;
A6: x = NHs.(root-tree t) by A3,OSALG_4:def 22;
take root-tree t;
consider s1 be Element of S, a be set such that
A7: a in X.s1 and
A8: t = [a,s1] by A4,Th4;
A9: s = s1 by A5,A8;
hence root-tree t in PTVars(s,X) by A7,A8,Def23;
reconsider rt = root-tree t as Element of SPTA.s by A7,A8,A9,Th10;
A10: NHs.rt = OSClass(R,rt) by OSALG_4:def 21;
reconsider tt = root-tree t as Element of TS D by A7,A8,Th10;
let t1 be Symbol of D;
assume
A11: x = (NH.s).(root-tree t1);
A12: OSClass(R,tt) = OSClass(R,rt) by Def27;
OSClass(R,tt) <> {} by Th32;
then x <> {} by A12,A6,OSALG_4:def 21;
then root-tree t1 in dom NHs by A1,A11,FUNCT_1:def 2;
then reconsider rt1 = root-tree t1 as Element of SPTA.s;
reconsider tt2 = rt1 as Element of TS D by Th15;
A13: OSClass(R,tt2) = OSClass(R,rt1) by Def27;
x = NHs.(root-tree t1) by A11,OSALG_4:def 22;
then OSClass(R,rt1) = OSClass(R,rt) by A6,A10,OSALG_4:def 21;
then tt2 in OSClass(R,tt) by A12,A13,Th34;
hence thesis by A7,A8,Th36;
end;
consider f be Function such that
A14: dom f = A & rng f c= PTVars(s,X) & for x be object st x in A holds P
[x,f.x] from FUNCT_1:sch 6(A2);
reconsider f as Function of A,PTVars(s,X) by A14,FUNCT_2:2;
take f;
let t be Symbol of D;
assume (NH.s).(root-tree t) in A;
hence thesis by A14;
end;
uniqueness
proof
let A,B be Function of OSFreeGen(s,X),PTVars(s,X);
set NH = OSNat_Hom(ParsedTermsOSA(X),LCongruence(X));
assume that
A15: for t be Symbol of DTConOSA(X) st (NH.s).(root-tree t) in
OSFreeGen(s,X) holds A.((NH.s).(root-tree t)) = root-tree t and
A16: for t be Symbol of DTConOSA(X) st (NH.s).(root-tree t) in
OSFreeGen(s,X) holds B.((NH.s).(root-tree t)) = root-tree t;
set D = DTConOSA(X), C = {(NH.s).(root-tree t) where t is Symbol of D : t
in Terminals D & t`2 = s};
A17: OSFreeGen(s,X) = C by Th30;
then
A18: dom B = C by FUNCT_2:def 1;
A19: for i be object st i in C holds A.i = B.i
proof
let i be object;
assume
A20: i in C;
then consider t be Symbol of D such that
A21: i = (NH.s).(root-tree t) and
t in Terminals D and
t`2 = s;
A.((NH.s).(root-tree t)) = root-tree t by A15,A17,A20,A21;
hence thesis by A16,A17,A20,A21;
end;
dom A = C by A17,FUNCT_2:def 1;
hence thesis by A18,A19,FUNCT_1:2;
end;
end;
definition
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
func NHReverse(X) -> ManySortedFunction of OSFreeGen(X),PTVars(X) means
for s be Element of S holds it.s = NHReverse(s,X);
existence
proof
defpred P[object,object] means
for s be Element of S st s = $1 holds $2 =
NHReverse(s,X);
set I = the carrier of S, FG = OSFreeGen(X);
A1: for i be object st i in I ex u be object st P[i,u]
proof
let i be object;
assume i in I;
then reconsider s = i as SortSymbol of S;
take NHReverse(s,X);
let s1 be Element of S;
assume s1 = i;
hence thesis;
end;
consider H be Function such that
A2: dom H = I & for i be object st i in I holds P[i,H.i] from CLASSES1:
sch 1 (A1);
reconsider H as ManySortedSet of I by A2,PARTFUN1:def 2,RELAT_1:def 18;
for x be object st x in dom H holds H.x is Function
proof
let i be object;
assume i in dom H;
then reconsider s = i as SortSymbol of S;
H.s = NHReverse(s,X) by A2;
hence thesis;
end;
then reconsider H as ManySortedFunction of I by FUNCOP_1:def 6;
for i be object st i in I holds H.i is Function of FG.i,(PTVars(X)).i
proof
let i be object;
assume i in I;
then reconsider s = i as SortSymbol of S;
A3: (PTVars X).s = PTVars(s,X) by Def24;
A4: H.i = NHReverse(s,X) by A2;
(OSFreeGen X).s = OSFreeGen(s,X) by Def26;
hence thesis by A3,A4;
end;
then reconsider H as ManySortedFunction of FG,PTVars(X) by PBOOLE:def 15;
take H;
let s be Element of S;
thus thesis by A2;
end;
uniqueness
proof
let A,B be ManySortedFunction of OSFreeGen(X),PTVars(X);
assume that
A5: for s be Element of S holds A.s = NHReverse(s,X) and
A6: for s be Element of S holds B.s =NHReverse(s,X);
for i be object st i in the carrier of S holds A.i = B.i
proof
let i be object;
assume i in the carrier of S;
then reconsider s = i as SortSymbol of S;
A.s = NHReverse(s,X) by A5;
hence thesis by A6;
end;
hence thesis;
end;
end;
theorem Th38:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S holds OSFreeGen(X) is osfree
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
set FA = FreeOSA(X), PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, FG =
OSFreeGen(X);
let U1 be non-empty monotone OSAlgebra of S, F be ManySortedFunction of FG,
the Sorts of U1;
set SA =the Sorts of FA, S1 = the Sorts of U1, R = LCongruence(X), NH =
OSNat_Hom(PTA,R);
reconsider NH1= NH as ManySortedFunction of PTA, FA;
set NHP = (NH1 || PTVars(X));
A1: now
let s be Element of S;
A2: NHP.s = (NH1.s) | ((PTVars(X)).s) by MSAFREE:def 1;
hence NHP.s = (NH1.s) | (PTVars(s,X)) by Def24;
thus PTVars(s,X) c= SPTA.s;
thus dom (NH1.s) = SPTA.s & rng (NH1.s) c= SA.s by FUNCT_2:def 1
,RELAT_1:def 19;
A3: (PTVars(X)).s = PTVars(s,X) by Def24;
hence
A4: dom (NHP.s) = PTVars(s,X) by FUNCT_2:def 1;
for y being object holds
y in FG.s iff (ex x being object st x in dom (NHP.
s) & y = (NHP.s).x)
proof
let y be object;
thus y in FG.s implies
ex x being object st x in dom (NHP.s) & y = (NHP.s).
x
proof
assume y in FG.s;
then y in OSFreeGen(s,X) by Def26;
then consider a be object such that
A5: a in X.s and
A6: y = (NH.s).(root-tree [a,s]) by Def25;
take x = root-tree [a,s];
root-tree [a,s] in dom (NHP.s) by A4,A5,Def23;
hence thesis by A2,A6,FUNCT_1:47;
end;
given x being object such that
A7: x in dom (NHP.s) and
A8: y = (NHP.s).x;
consider a be object such that
A9: a in X.s and
A10: x = root-tree [a,s] by A3,A7,Def23;
y = (NH.s).(root-tree [a,s]) by A2,A7,A8,A10,FUNCT_1:47;
then y in OSFreeGen(s,X) by A9,Def25;
hence thesis by Def26;
end;
hence
A11: rng (NHP.s) = FG.s by FUNCT_1:def 3;
hence NHP.s is Function of PTVars(s,X),FG.s by A4,FUNCT_2:1;
thus NHP.s is Function of (PTVars(X)).s,FG.s by A3,A4,A11,FUNCT_2:1;
end;
then for i being object st i in the carrier of S
holds NHP.i is Function of (PTVars X).i, FG.i;
then reconsider
NHP = (NH1 || PTVars(X)) as ManySortedFunction of PTVars(X),FG by
PBOOLE:def 15;
consider h being ManySortedFunction of PTA,U1 such that
A12: h is_homomorphism PTA,U1 and
A13: h is order-sorted and
A14: h || PTVars(X) = F ** NHP by Th37;
reconsider hCng = OSCng(h) as monotone OSCongruence of PTA by A12,A13,
OSALG_4:24;
reconsider H = OSHomQuot(h,R) as ManySortedFunction of FA,U1;
take H;
A15: R c= hCng by Def17;
hence H is_homomorphism FA,U1 & H is order-sorted by A12,A13,OSALG_4:25;
for s be Element of S holds F.s = (H.s) | (FG.s)
proof
let s be Element of S;
A16: FG.s = OSFreeGen(s,X) by Def26;
then FG.s c= SA.s;
then FG.s c= dom OSHomQuot(h,R,s) by FUNCT_2:def 1;
then
A17: dom (OSHomQuot(h,R,s) | (FG.s)) = FG.s by RELAT_1:62;
rng (OSHomQuot(h,R,s) | (FG.s)) c= S1.s by RELAT_1:def 19;
then reconsider
OSF = OSHomQuot(h,R,s) | (FG.s) as Function of FG.s,S1.s by A17,FUNCT_2:2;
now
A18: dom (NHP.s) = PTVars(s,X) by A1;
A19: ((h.s) | ((PTVars(X)).s)) = (F ** NHP).s by A14,MSAFREE:def 1
.= (F.s )*(NHP.s) by MSUALG_3:2;
let x be object such that
A20: x in FG.s;
consider a being object such that
A21: a in X.s and
A22: x = (NH.s).(root-tree [a,s]) by A16,A20,Def25;
reconsider xa = root-tree [a,s] as Element of SPTA.s by A21,Th10;
A23: OSClass(R,xa) = (OSNat_Hom(PTA,R,s)).xa by OSALG_4:def 21
.= x by A22,OSALG_4:def 22;
A24: root-tree [a,s] in PTVars(s,X) by A21,Def23;
then xa in (PTVars(X)).s by Def24;
then
A25: (h.s).xa = (h.s | ((PTVars(X)).s)).xa by FUNCT_1:49;
A26: (OSHomQuot(h,R,s)).(OSClass(R,xa)) = (h.s).xa by A12,A13,A15,
OSALG_4:def 27;
(NHP.s).xa = ((NH.s) | (PTVars(s,X))).xa by A1
.= (NH.s).xa by A24,FUNCT_1:49;
then (h.s).xa = (F.s).x by A22,A24,A19,A25,A18,FUNCT_1:13;
hence (F.s).x = (OSHomQuot(h,R,s) | (FG.s)).x by A20,A23,A26,FUNCT_1:49;
end;
then F.s = OSF by FUNCT_2:12;
hence thesis by OSALG_4:def 28;
end;
then
for i be set st i in the carrier of S holds F.i = (H.i) | (FG.i);
hence thesis by MSAFREE:def 1;
end;
theorem Th39:
for S be locally_directed OrderSortedSign, X be non-empty
ManySortedSet of S holds FreeOSA(X) is osfree
proof
let S be locally_directed OrderSortedSign, X be non-empty ManySortedSet of S;
take OSFreeGen(X);
thus thesis by Th38;
end;
registration
let S be locally_directed OrderSortedSign;
cluster osfree strict for non-empty monotone OSAlgebra of S;
existence
proof
set U1 = the non-empty OSAlgebra of S;
reconsider X = the Sorts of U1 as non-empty ManySortedSet of S;
take FreeOSA(X);
thus thesis by Th39;
end;
end;
begin
:: PTMin ... minimality of PTCongruence on regular signatures
:: minimal terms
definition
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
func PTMin X -> Function of TS(DTConOSA(X)), TS(DTConOSA(X)) means
:Def31:
( for t being Symbol of DTConOSA(X) st t in Terminals DTConOSA(X) holds it.(
root-tree t) = pi t ) & for nt being Symbol of DTConOSA(X), ts being
FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds it.(nt-tree ts) = pi(@(
X,nt),it * ts);
existence
proof
set G = DTConOSA(X);
set D = TS G;
deffunc TermVal(Symbol of G) = pi $1;
deffunc NTermVal(Symbol of G,set,FinSequence of D) = In(pi(@(X,$1),$3),D);
consider f being Function of TS(G), D such that
A1: (for t being Symbol of G st t in Terminals G holds f.(root-tree t)
= TermVal(t)) & for nt being Symbol of G, ts being FinSequence of TS(G) st nt
==> roots ts holds f.(nt-tree ts) = NTermVal(nt, roots ts, f*ts qua FinSequence
of D) from DTCONSTR:sch 8;
take f;
thus for t being Symbol of G st t in Terminals G holds f.(root-tree t) =
TermVal(t) by A1;
let nt be Symbol of G, ts be FinSequence of TS(G);
reconsider fts = f * ts as FinSequence of D;
assume nt ==> roots ts;
then f.(nt-tree ts) = In(pi(@(X,nt),fts),D) by A1;
hence thesis by SUBSET_1:def 8;
end;
uniqueness
proof
set G = DTConOSA(X);
set D = TS G;
deffunc TermVal(Symbol of G) = pi $1;
deffunc NTermVal(Symbol of G,set,FinSequence of D) = pi(@(X,$1),$3 qua
FinSequence of D);
let M1,M2 be Function of TS(DTConOSA(X)), TS(DTConOSA(X)) such that
A2: (for t being Symbol of DTConOSA(X) st t in Terminals DTConOSA(X)
holds M1.(root-tree t) = TermVal(t) ) & for nt being Symbol of DTConOSA(X), ts
being FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds M1.(nt-tree ts) =
NTermVal(nt, roots ts, M1 * ts qua FinSequence of D) and
A3: (for t being Symbol of DTConOSA(X) st t in Terminals DTConOSA(X)
holds M2.(root-tree t) = TermVal(t) ) & for nt being Symbol of DTConOSA(X), ts
being FinSequence of TS(DTConOSA(X)) st nt ==> roots ts holds M2.(nt-tree ts) =
NTermVal(nt, roots ts, M2 * ts qua FinSequence of D);
thus M1 = M2 from DTCONSTR:sch 9(A2,A3);
end;
end;
theorem Th40:
for S be locally_directed regular monotone OrderSortedSign, X
be non-empty ManySortedSet of S, t being Element of TS DTConOSA(X) holds (PTMin
X).t in OSClass(PTCongruence(X),t) & LeastSort ((PTMin X).t) <= LeastSort t & (
for s being Element of S, x being set st x in X.s & t = root-tree [x,s] holds (
PTMin X).t = t ) & (for o being OperSymbol of S, ts being FinSequence of TS(
DTConOSA(X)) st OSSym(o,X) ==> roots ts & t = OSSym(o,X)-tree ts holds
LeastSorts ((PTMin X)*ts) <= the_arity_of o & OSSym(o,X) ==> roots ((PTMin X)*
ts) & OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X) ==> roots ((PTMin X)*ts) & (
PTMin X).t = OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X)-tree ((PTMin X)*ts))
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, t be Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), D = DTConOSA(X), R = PTCongruence(X), SPTA = (
the Sorts of PTA), M = PTMin(X), F = PTClasses(X);
defpred P1[Element of TS D] means (PTMin X).$1 in OSClass(R,$1);
defpred P2[Element of TS D] means LeastSort ((PTMin X).$1) <= LeastSort $1;
defpred P4[Element of TS D] means (for s being Element of S, x being set st
x in X.s & $1 = root-tree [x,s] holds (PTMin X).$1 = $1 );
defpred P5[Element of TS D] means for o being OperSymbol of S, ts being
FinSequence of TS(DTConOSA(X)) st OSSym(o,X) ==> roots ts & $1 = OSSym(o,X)
-tree ts holds LeastSorts ((PTMin X)*ts) <= the_arity_of o & OSSym(o,X) ==>
roots ((PTMin X)*ts) & OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X) ==> roots (
(PTMin X)*ts) & (PTMin X).$1 = OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X)
-tree ((PTMin X)*ts);
defpred P[DecoratedTree of the carrier of D] means ex t1 being Element of TS
D st t1 = $1 & P1[t1] & P2[t1] & P4[t1] & P5[t1];
A1: for nt being Symbol of D, ts1 being FinSequence of TS(D) st nt ==> roots
ts1 & (for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1 holds
P[dt1]) holds P[nt-tree ts1]
proof
let nt being Symbol of D, ts1 being FinSequence of TS(D) such that
A2: nt ==> roots ts1 and
A3: for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1
ex t2 being Element of TS D st t2 = dt1 & P1[t2] & P2[t2] & P4[t2] & P5[t2];
reconsider t1 = nt-tree ts1 as Element of TS D by A2,Th12;
A4: rng ts1 c= TS D by FINSEQ_1:def 4;
consider o being OperSymbol of S such that
A5: nt = [o,the carrier of S] and
A6: ts1 in Args(o,PTA) and
A7: nt-tree ts1 = Den(o,PTA).ts1 and
for s1 being Element of S holds nt-tree ts1 in SPTA.s1 iff
the_result_sort_of o <= s1 by A2,Th12;
set Ms = (PTMin X)*ts1, LSMs = LeastSorts Ms, w = the_arity_of o, so =
the_result_sort_of o, Lo = LBound(o,LSMs);
A8: dom ts1 = dom w by A6,MSUALG_3:6;
A9: dom ((PTMin X)*ts1) = dom ts1 by FINSEQ_3:120;
then
A10: dom LSMs = dom ts1 by Def13;
@(X,nt) = o by A2,A5,Def15;
then
A11: M.(nt-tree ts1) = pi(o,M*ts1) by A2,Def31;
A12: P5[t1]
proof
let o2 be OperSymbol of S, ts be FinSequence of TS(DTConOSA(X)) such
that
OSSym(o2,X) ==> roots ts and
A13: t1 = OSSym(o2,X)-tree ts;
set Ms1 = (PTMin X)*ts, LSMs1 = LeastSorts Ms1, Lo2 = LBound(o2,LSMs1);
A14: ts = ts1 by A13,TREES_4:15;
A15: OSSym(o2,X) = nt by A13,TREES_4:15;
then
A16: o2 = o by A5,XTUPLE_0:1;
A17: LeastSorts ((PTMin X)*ts1) <= the_arity_of o
proof
thus len LSMs = len w by A8,A10,FINSEQ_3:29;
let i be set such that
A18: i in dom LSMs;
reconsider k = i as Nat by A18;
ts1.k in rng ts1 by A10,A18,FUNCT_1:3;
then reconsider tr = ts1.k as Element of TS D by A4;
A19: ex tr1 being Element of TS D st tr1 = tr &( P1[tr1])&( P2 [tr1])
&( P4[tr1])& P5[tr1] by A3,A10,A18,FUNCT_1:3;
A20: w/.k = w.i by A8,A10,A18,PARTFUN1:def 6;
A21: Ms.k = (PTMin X).tr by A9,A10,A18,FINSEQ_3:120;
ts1.k in SPTA.(w/.k) by A6,A8,A10,A18,MSUALG_6:2;
then
A22: LeastSort (tr) <= (w/.k) by Def12;
let s1,s2 be Element of S such that
A23: s1 = LSMs.i and
A24: s2 = w.i;
ex t3 being Element of TS D st t3 = Ms.k & LSMs.k = LeastSort
t3 by A9,A10,A18,Def13;
hence thesis by A19,A23,A24,A21,A22,A20,ORDERS_2:3;
end;
hence LeastSorts ((PTMin X)*ts) <= the_arity_of o2 by A5,A15,A14,
XTUPLE_0:1;
LBound(o2,LSMs1) has_least_rank_for o2,LSMs1 by A14,A16,A17,OSALG_1:14;
then LBound(o2,LSMs1) has_least_args_for o2,LSMs1;
then LSMs1 <= the_arity_of Lo2;
then
A25: Ms1 in Args(Lo2,PTA) by Th18;
Ms1 in Args(o2,PTA) by A14,A16,A17,Th18;
hence OSSym(o2,X) ==> roots Ms1 & OSSym(Lo2,X) ==> roots Ms1 by A25,Th13;
hence thesis by A11,A14,A16,Def14;
end;
A26: for s being Element of S, x being set st x in X.s & t1 = root-tree [x
,s] holds M.t1 = t1
proof
let s being Element of S, x being set such that
A27: x in X.s and
A28: t1 = root-tree [x,s];
t1.{} = [o,the carrier of S] by A5,TREES_4:def 4;
hence thesis by A27,A28,Th10;
end;
A29: F.t1 = @(nt,F*ts1) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom (F*ts1) & for
y being Nat st y in dom (F*ts1) holds [x2.y,w3/.y] in (F*ts1).y};
take t1;
thus t1 = nt-tree ts1;
A30: ex l being Nat st dom ts1 = Seg l by FINSEQ_1:def 2;
reconsider ta1 = t1 as Element of SPTA.(LeastSort t1) by Def12;
A31: dom (F*ts1) = dom ts1 by FINSEQ_3:120;
A32: nt = OSSym(o,X) by A5;
then OSSym(LBound(o,LeastSorts ((PTMin X)*ts1)),X) ==> roots ((PTMin X)*
ts1) by A2,A12;
then consider o3 being OperSymbol of S such that
A33: OSSym(Lo,X) = [o3,the carrier of S] and
A34: Ms in Args(o3,ParsedTermsOSA(X)) and
A35: OSSym(Lo,X)-tree Ms = Den(o3,ParsedTermsOSA(X)).Ms and
for s1 being Element of S holds OSSym(Lo,X)-tree Ms in (the Sorts of
PTA).s1 iff the_result_sort_of o3 <= s1 by Th12;
reconsider Msr = Ms as Element of Args(Lo,PTA) by A33,A34,XTUPLE_0:1;
A36: Lo = o3 by A33,XTUPLE_0:1;
then
A37: M.t1 = Den(Lo,PTA).(Msr) by A2,A32,A12,A35;
A38: LeastSorts ((PTMin X)*ts1) <= the_arity_of o by A2,A32,A12;
then
A39: Lo has_least_rank_for o,LSMs by OSALG_1:14;
then
A40: Lo has_least_sort_for o,LSMs;
then
A41: o ~= Lo;
Lo has_least_args_for o,LSMs by A39;
then the_arity_of Lo <= w by A38;
then
A42: len the_arity_of Lo = len w;
A43: OSClass(R,t1) = OSClass(R,ta1) by Def27
.= proj1(F.t1) by Th25;
A44: the_result_sort_of Lo <= so by A38,A40;
A45: M.t1 in OSClass(R,t1)
proof
defpred P[object,object] means [Ms.$1,$2] in (F*ts1).$1;
A46: for i being object st i in dom (F*ts1)
ex s4 being object st s4 in the
carrier of S & P[i,s4]
proof
let i be object such that
A47: i in dom (F*ts1);
A48: (F*ts1).i = F.(ts1.i) by A47,FINSEQ_3:120;
ts1.i in rng ts1 by A31,A47,FUNCT_1:3;
then reconsider td1 = ts1.i as Element of TS D by A4;
A49: ex td2 being Element of TS D st td2 = td1 & M.td2 in OSClass(R,
td2) &( P2[td2])&( P4[td2])& P5[td2] by A3,A31,A47,FUNCT_1:3;
A50: Ms.i = M.(ts1.i) by A31,A47,FUNCT_1:13;
reconsider tda = td1 as Element of SPTA.(LeastSort td1) by Def12;
OSClass(R,td1) = OSClass(R,tda) by Def27
.= proj1((F*ts1).i) by A48,Th25;
then ex s4 being object st [Ms.i,s4] in (F*ts1).i by A50,A49,
XTUPLE_0:def 12;
hence thesis by A48,Th23;
end;
consider f being Function such that
A51: dom f = dom (F*ts1) & rng f c= the carrier of S & for z being
object st z in dom (F*ts1) holds P[z,f.z] from FUNCT_1:sch 6(A46);
reconsider wa = f as FinSequence by A31,A30,A51,FINSEQ_1:def 2;
reconsider wa as FinSequence of the carrier of S by A51,FINSEQ_1:def 4;
reconsider wa as Element of (the carrier of S)* by FINSEQ_1:def 11;
for y being Nat st y in dom (F*ts1) holds [Msr.y,wa/.y] in (F*ts1). y
proof
let y be Nat such that
A52: y in dom (F*ts1);
(wa/.y) = wa.y by A51,A52,PARTFUN1:def 6;
hence thesis by A51,A52;
end;
then [Den(Lo,PTA).Msr,so] in F.t1 by A5,A29,A41,A44,A42,A51;
hence thesis by A43,A37,XTUPLE_0:def 12;
end;
(PTMin X).t1 = OSSym(LBound(o,LeastSorts ((PTMin X)*ts1)),X)-tree ((
PTMin X)*ts1) by A2,A32,A12;
then
A53: LeastSort (M.t1) = the_result_sort_of Lo by A34,A35,A36,Th17;
LeastSort t1 = so by A6,A7,Th17;
hence thesis by A12,A38,A53,A40,A45,A26;
end;
A54: for s being Symbol of D st s in Terminals D holds P[root-tree s]
proof
let sy be Symbol of D such that
A55: sy in Terminals D;
reconsider t1 = root-tree sy as Element of TS DTConOSA(X) by A55,
DTCONSTR:def 1;
take t1;
thus t1 = root-tree sy;
A56: M.(root-tree sy) = pi sy by A55,Def31
.= root-tree sy by A55,Def16;
hence M.t1 in OSClass(R,t1) by Th32;
thus LeastSort (M.t1) <= LeastSort t1 by A56;
thus for s1 being Element of S, x1 being set st x1 in X.s1 & t1 =
root-tree [x1,s1] holds M.t1 = t1 by A56;
A57: ex s be Element of S, x be set st x in X.s & sy = [x,s] by A55,Th4;
hereby
let o being OperSymbol of S, ts being FinSequence of TS(DTConOSA(X))
such that
OSSym(o,X) ==> roots ts and
A58: t1 = OSSym(o,X)-tree ts;
t1.{} = [o,the carrier of S] by A58,TREES_4:def 4;
hence LeastSorts ((PTMin X)*ts) <= the_arity_of o & OSSym(o,X) ==> roots
((PTMin X)*ts) & OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X) ==> roots ((PTMin
X)*ts) & (PTMin X).t1 = OSSym(LBound(o,LeastSorts ((PTMin X)*ts)),X)-tree ((
PTMin X)*ts) by A57,Th10;
end;
end;
for dt being DecoratedTree of the carrier of D st dt in TS(D) holds P[
dt] from DTCONSTR:sch 7(A54,A1);
then
ex t1 being Element of TS D st t1 = t &( P1[t1])&( P2[t1] )&( P4[t1])&
P5[t1];
hence thesis;
end;
theorem Th41:
for S be locally_directed regular monotone OrderSortedSign, X
be non-empty ManySortedSet of S, t,t1 being Element of TS DTConOSA(X) st t1 in
OSClass(PTCongruence(X),t) holds (PTMin X).t1 = (PTMin X).t
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, t be Element of TS DTConOSA(X);
set PTA = ParsedTermsOSA(X), D = DTConOSA(X), R = PTCongruence(X), SPTA = (
the Sorts of PTA), M = PTMin(X), F = PTClasses(X);
defpred P3[Element of TS D] means (for t1 being Element of TS DTConOSA(X) st
t1 in OSClass(R,$1) holds (PTMin X).t1 = (PTMin X).$1 );
defpred P[DecoratedTree of the carrier of D] means ex t1 being Element of TS
D st t1 = $1 & P3[t1];
A1: for nt being Symbol of D, ts1 being FinSequence of TS(D) st nt ==> roots
ts1 & (for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1 holds
P[dt1]) holds P[nt-tree ts1]
proof
let nt being Symbol of D, ts1 being FinSequence of TS(D) such that
A2: nt ==> roots ts1 and
A3: for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1
ex t2 being Element of TS D st t2 = dt1 & P3[t2];
reconsider t1 = nt-tree ts1 as Element of TS D by A2,Th12;
A4: F.t1 = @(nt,F*ts1) by A2,Def21
.= {[Den(o2,ParsedTermsOSA(X)).x2,s3] where o2 is OperSymbol of S, x2
is Element of Args(o2,ParsedTermsOSA(X)), s3 is Element of S : ( ex o1 being
OperSymbol of S st nt = [o1,the carrier of S] & o1 ~= o2 & len the_arity_of o1
= len the_arity_of o2 & the_result_sort_of o1 <= s3 & the_result_sort_of o2 <=
s3 ) & ex w3 being Element of (the carrier of S)* st dom w3 = dom (F*ts1) & for
y being Nat st y in dom (F*ts1) holds [x2.y,w3/.y] in (F*ts1).y};
consider o being OperSymbol of S such that
A5: nt = [o,the carrier of S] and
A6: ts1 in Args(o,PTA) and
nt-tree ts1 = Den(o,PTA).ts1 and
for s1 being Element of S holds nt-tree ts1 in SPTA.s1 iff
the_result_sort_of o <= s1 by A2,Th12;
A7: t1 = OSSym(o,X)-tree ts1 by A5;
then
A8: LeastSorts (M*ts1) <= the_arity_of o by A2,A5,Th40;
set Ms = (PTMin X)*ts1, w = the_arity_of o;
A9: dom ts1 = dom w by A6,MSUALG_3:6;
reconsider ta1 = t1 as Element of SPTA.(LeastSort t1) by Def12;
take t1;
thus t1 = nt-tree ts1;
A10: dom (F*ts1) = dom ts1 by FINSEQ_3:120;
A11: OSClass(R,t1) = OSClass(R,ta1) by Def27
.= proj1(F.t1) by Th25;
A12: rng ts1 c= TS D by FINSEQ_1:def 4;
A13: dom ((PTMin X)*ts1) = dom ts1 by FINSEQ_3:120;
A14: M.t1 = OSSym(LBound(o,LeastSorts (M*ts1)),X)-tree (M*ts1) by A2,A5,A7,Th40
;
thus for t3 being Element of TS DTConOSA(X) st t3 in OSClass(R,t1) holds (
PTMin X).t3 = (PTMin X).t1
proof
let t3 be Element of TS D;
assume t3 in OSClass(R,t1);
then consider s4 being object such that
A15: [t3,s4] in F.t1 by A11,XTUPLE_0:def 12;
consider o2 being OperSymbol of S, x2 being Element of Args(o2,
ParsedTermsOSA(X)), s3 being Element of S such that
A16: [t3,s4] = [Den(o2,ParsedTermsOSA(X)).x2,s3] and
A17: ex o1 being OperSymbol of S st nt = [o1,the carrier of S] & o1
~= o2 & len the_arity_of o1 = len the_arity_of o2 & the_result_sort_of o1 <= s3
& the_result_sort_of o2 <= s3 and
A18: ex w3 being Element of (the carrier of S)* st dom w3 = dom (F*
ts1) & for y being Nat st y in dom (F*ts1) holds [x2.y,w3/.y] in (F*ts1).y by
A4,A15;
consider o1 being OperSymbol of S such that
A19: nt = [o1,the carrier of S] and
A20: o1 ~= o2 and
A21: len the_arity_of o1 = len the_arity_of o2 and
the_result_sort_of o1 <= s3 and
the_result_sort_of o2 <= s3 by A17;
A22: o1 = o by A5,A19,XTUPLE_0:1;
then
A23: dom w = dom the_arity_of o2 by A21,FINSEQ_3:29;
reconsider ts3 = x2 as FinSequence of TS(D) by Th13;
A24: dom ts3 = dom the_arity_of o2 by MSUALG_3:6;
A25: dom (M*ts3) = dom ts3 by FINSEQ_3:120;
A26: rng ts3 c= TS D by FINSEQ_1:def 4;
for k being Nat st k in dom (M*ts3) holds (M*ts3).k = Ms.k
proof
consider w3 being Element of (the carrier of S)* such that
dom w3 = dom (F*ts1) and
A27: for y being Nat st y in dom (F*ts1) holds [x2.y,w3/.y] in (F*
ts1).y by A18;
let k being Nat such that
A28: k in dom (M*ts3);
A29: ts3.k in rng ts3 by A25,A28,FUNCT_1:3;
ts1.k in rng ts1 by A9,A23,A24,A25,A28,FUNCT_1:3;
then reconsider
tk1 = ts1.k, tk3 = ts3.k as Element of TS D by A12,A26,A29;
reconsider tak = tk1 as Element of SPTA.(LeastSort tk1) by Def12;
consider tk2 be Element of TS D such that
A30: tk2 = tk1 and
A31: for t4 being Element of TS D st t4 in OSClass(R,tk2) holds M
.t4 = M.tk2 by A3,A9,A23,A24,A25,A28,FUNCT_1:3;
[tk3,w3/.k] in (F*ts1).k by A10,A9,A23,A24,A25,A28,A27;
then
A32: [tk3,w3/.k] in F.tk1 by A10,A9,A23,A24,A25,A28,FINSEQ_3:120;
OSClass(R,tk1) = OSClass(R,tak) by Def27
.= proj1(F.tk1) by Th25;
then tk3 in OSClass(R,tk1) by A32,XTUPLE_0:def 12;
then M.tk3 = M.tk1 by A30,A31;
then M.tk3 = Ms.k by A13,A9,A23,A24,A25,A28,FINSEQ_3:120;
hence thesis by A28,FINSEQ_3:120;
end;
then
A33: M*ts3 = M*ts1 by A13,A9,A23,A25,FINSEQ_1:13,MSUALG_3:6;
A34: OSSym(o2,X) ==> roots x2 by Th13;
then ex o3 being OperSymbol of S st OSSym(o2,X) = [o3,the carrier of S]
& ts3 in Args(o3,PTA) & OSSym(o2,X)-tree ts3 = Den(o3,PTA).ts3 & for s1 being
Element of S holds OSSym(o2,X)-tree ts3 in SPTA.s1 iff the_result_sort_of o3 <=
s1 by Th12;
then consider o3 being OperSymbol of S such that
A35: OSSym(o2,X) = [o3,the carrier of S] and
ts3 in Args(o3,PTA) and
A36: OSSym(o2,X)-tree ts3 = Den(o3,PTA).ts3;
o2 = o3 by A35,XTUPLE_0:1;
then
A37: t3 = OSSym(o2,X)-tree ts3 by A16,A36,XTUPLE_0:1;
then
A38: LeastSorts (M*ts3) <= the_arity_of o2 by A34,Th40;
M.t3 = OSSym(LBound(o2,LeastSorts (M*ts3)),X)-tree (M*ts3) by A34,A37
,Th40;
hence thesis by A14,A8,A20,A22,A33,A38,OSALG_1:34;
end;
end;
A39: for s being Symbol of D st s in Terminals D holds P[root-tree s]
proof
let sy be Symbol of D such that
A40: sy in Terminals D;
reconsider t1 = root-tree sy as Element of TS DTConOSA(X) by A40,
DTCONSTR:def 1;
take t1;
thus t1 = root-tree sy;
A41: ex s be Element of S, x be set st x in X.s & sy = [x,s] by A40,Th4;
let t2 be Element of TS DTConOSA(X);
assume t2 in OSClass(R,t1);
hence thesis by A41,Th33;
end;
for dt being DecoratedTree of the carrier of D st dt in TS(D) holds P[
dt] from DTCONSTR:sch 7(A39,A1);
then ex t1 being Element of TS D st t1 = t & P3[t1];
hence thesis;
end;
theorem Th42:
for S be locally_directed regular monotone OrderSortedSign, X
be non-empty ManySortedSet of S, t1,t2 be Element of TS DTConOSA(X) holds t2 in
OSClass(PTCongruence(X),t1) iff (PTMin X).t2 = (PTMin X).t1
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, t1,t2 be Element of TS DTConOSA(X);
set R = PTCongruence(X),M = PTMin(X);
thus t2 in OSClass(R,t1) implies M.t2 = M.t1 by Th41;
M.t2 in OSClass(R,t2) by Th40;
then
A1: OSClass(R,t2) = OSClass(R,M.t2) by Th34;
M.t1 in OSClass(R,t1) by Th40;
then
A2: OSClass(R,t1) = OSClass(R,M.t1) by Th34;
assume M.t2 = M.t1;
hence thesis by A2,A1,Th32;
end;
theorem Th43:
for S be locally_directed regular monotone OrderSortedSign, X
be non-empty ManySortedSet of S, t1 be Element of TS DTConOSA(X) holds (PTMin X
).((PTMin X).t1) = (PTMin X).t1
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, t1 be Element of TS DTConOSA(X);
(PTMin X).t1 in OSClass(PTCongruence(X),t1) by Th40;
hence thesis by Th42;
end;
theorem Th44:
for S be locally_directed regular monotone OrderSortedSign,
X be non-empty ManySortedSet of S,
R be monotone MSEquivalence-like (OrderSortedRelation of ParsedTermsOSA(X)),
t be Element of TS DTConOSA(X) holds
[t,(PTMin X).t] in R.(LeastSort t)
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D = DTConOSA(X),
M = PTMin X;
let R be monotone MSEquivalence-like OrderSortedRelation of PTA;
defpred P3[set] means ex t1 being Element of TS D st t1 = $1 & [t1,M.t1] in
R.(LeastSort t1);
let t be Element of TS D;
A1: R is os-compatible by OSALG_4:def 2;
A2: for nt being Symbol of D, ts1 being FinSequence of TS(D) st nt ==> roots
ts1 & (for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1 holds
P3[dt1] ) holds P3[nt-tree ts1]
proof
let nt being Symbol of D, ts1 being FinSequence of TS(D) such that
A3: nt ==> roots ts1 and
A4: for dt1 being DecoratedTree of the carrier of D st dt1 in rng ts1
holds P3[dt1];
consider o being OperSymbol of S such that
A5: nt = [o,the carrier of S] and
A6: ts1 in Args(o,PTA) and
A7: nt-tree ts1 = Den(o,PTA).ts1 and
for s1 being Element of S holds nt-tree ts1 in SPTA.s1 iff
the_result_sort_of o <= s1 by A3,Th12;
reconsider t1 = nt-tree ts1 as Element of TS D by A3,Th12;
A8: dom ((PTMin X)*ts1) = dom ts1 by FINSEQ_3:120;
reconsider tsa =ts1 as Element of Args(o,PTA) by A6;
set w = the_arity_of o;
A9: rng ts1 c= TS D by FINSEQ_1:def 4;
set lo = LBound(o,LeastSorts (M*ts1)), rs1 = the_result_sort_of o;
A10: t1 = OSSym(o,X)-tree ts1 by A5;
then
A11: OSSym(LBound(o,LeastSorts (M*ts1)),X) ==> roots (M*ts1) by A3,A5,Th40;
then reconsider tsm =M*ts1 as Element of Args(lo,PTA) by Th13;
A12: dom ts1 = dom w by A6,MSUALG_3:6;
A13: for y being Nat st y in dom tsm holds [tsm.y,tsa.y] in R.((
the_arity_of o)/.y)
proof
let y being Nat such that
A14: y in dom tsm;
ts1.y in rng ts1 by A8,A14,FUNCT_1:3;
then reconsider td1=ts1.y as Element of TS D by A9;
consider t2 being Element of TS D such that
A15: t2 = td1 and
A16: [t2,M.t2] in R.(LeastSort t2) by A4,A8,A14,FUNCT_1:3;
A17: M.t2 = tsm.y by A14,A15,FINSEQ_3:120;
A18: M.t2 in SPTA.(LeastSort t2) by A16,ZFMISC_1:87;
tsa.y in SPTA.(w/.y) by A8,A12,A14,MSUALG_6:2;
then
A19: LeastSort t2 <= w/.y by A15,Def12;
A20: t2 in SPTA.(LeastSort t2) by A16,ZFMISC_1:87;
field(R.(LeastSort t2)) = SPTA.(LeastSort t2) by ORDERS_1:12;
then R.(LeastSort t2) is_symmetric_in SPTA.(LeastSort t2) by
RELAT_2:def 11;
then [M.t2,t2] in R.(LeastSort t2) by A16,A20,A18,RELAT_2:def 3;
hence thesis by A1,A15,A20,A18,A17,A19;
end;
LeastSorts (M*ts1) <= the_arity_of o by A3,A5,A10,Th40;
then lo <= o by OSALG_1:35;
then
A21: [Den(lo,PTA).tsm,Den(o,PTA).tsa] in R.(the_result_sort_of o) by A13,
OSALG_4:def 26;
then
A22: Den(o,PTA).tsa in SPTA.rs1 by ZFMISC_1:87;
A23: LeastSort t1 = the_result_sort_of o by A6,A7,Th17;
A24: OSSym(o,X) ==> roots ts1 by A3,A5;
take t1;
thus t1 = nt-tree ts1;
field(R.rs1) = SPTA.rs1 by ORDERS_1:12;
then
A25: R.rs1 is_symmetric_in SPTA.rs1 by RELAT_2:def 11;
Den(lo,PTA).tsm in SPTA.rs1 by A21,ZFMISC_1:87;
then
A26: [Den(o,PTA).tsa,Den(lo,PTA).tsm] in R.rs1 by A21,A22,A25,RELAT_2:def 3;
consider o4 being OperSymbol of S such that
A27: OSSym(lo,X) = [o4,the carrier of S] and
M*ts1 in Args(o4,PTA) and
A28: OSSym(lo,X)-tree (M*ts1) = Den(o4,PTA).(M*ts1) and
for s1 being Element of S holds OSSym(lo,X)-tree (M*ts1) in SPTA.s1
iff the_result_sort_of o4 <= s1 by A11,Th12;
lo = o4 by A27,XTUPLE_0:1;
hence thesis by A5,A7,A24,A26,A23,A28,Th40;
end;
A29: for s being Symbol of D st s in Terminals D holds P3[root-tree s]
proof
let sy being Symbol of D;
assume sy in Terminals D;
then
A30: ex s be Element of S, x be set st x in X.s & sy = [x,s] by Th4;
then reconsider t1 = root-tree sy as Element of TS D by Th10;
take t1;
A31: t1 in SPTA.(LeastSort t1) by Def12;
field(R.(LeastSort t1)) = SPTA.(LeastSort t1) by ORDERS_1:12;
then
A32: R.(LeastSort t1) is_reflexive_in SPTA.(LeastSort t1) by RELAT_2:def 9;
t1 = M.t1 by A30,Th40;
hence thesis by A31,A32,RELAT_2:def 1;
end;
for dt being DecoratedTree of the carrier of D st dt in TS(D) holds P3[
dt] from DTCONSTR:sch 7(A29,A2);
then
ex t1 being Element of TS D st t = t1 & [t1,M.t1] in R.( LeastSort t1 );
hence thesis;
end;
theorem Th45:
for S be locally_directed regular monotone OrderSortedSign, X
be non-empty ManySortedSet of S, R be monotone MSEquivalence-like
OrderSortedRelation of ParsedTermsOSA(X) holds PTCongruence(X) c= R
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
set PTA = ParsedTermsOSA(X), SPTA = the Sorts of PTA, D = DTConOSA(X), M =
PTMin X, P = PTCongruence X;
reconsider O1 = SPTA as OrderSortedSet of S;
let R be monotone MSEquivalence-like OrderSortedRelation of PTA;
let i be object such that
A1: i in the carrier of S;
reconsider s = i as Element of S by A1;
A2: R is os-compatible by OSALG_4:def 2;
for a,b being object holds [a,b] in P.s implies [a,b] in R.s
proof
A3: field(R.s) = SPTA.s by ORDERS_1:12;
then
A4: R.s is_transitive_in SPTA.s by RELAT_2:def 16;
A5: R.s is_symmetric_in SPTA.s by A3,RELAT_2:def 11;
let a,b be object such that
A6: [a,b] in P.s;
reconsider ta=a,tb=b as Element of SPTA.s by A6,ZFMISC_1:87;
A7: a in SPTA.i by A6,ZFMISC_1:87;
A8: OSClass(P,ta) = OSClass(P,tb) by A6,OSALG_4:12;
A9: b in SPTA.i by A6,ZFMISC_1:87;
dom SPTA = the carrier of S by PARTFUN1:def 2;
then reconsider t1=a,t2=b as Element of PTA by A1,A7,A9,CARD_5:2;
reconsider t1,t2 as Element of TS D by Th14;
A10: t2 in SPTA.(LeastSort t2) by Def12;
A11: M.t2 in SPTA.(LeastSort M.t2) by Def12;
LeastSort (M.t2) <= LeastSort t2 by Th40;
then
A12: O1.(LeastSort (M.t2)) c= O1.(LeastSort t2) by OSALG_1:def 16;
A13: [t2,M.t2] in R.(LeastSort t2) by Th44;
LeastSort t2 <= s by A9,Def12;
then
A14: [t2,M.t2] in R.s by A2,A10,A11,A12,A13;
then M.t2 in SPTA.s by ZFMISC_1:87;
then
A15: [M.t2,t2] in R.s by A9,A14,A5,RELAT_2:def 3;
LeastSort (M.t1) <= LeastSort t1 by Th40;
then
A16: O1.(LeastSort (M.t1)) c= O1.(LeastSort t1) by OSALG_1:def 16;
A17: M.t1 in SPTA.(LeastSort M.t1) by Def12;
A18: [t1,M.t1] in R.(LeastSort t1) by Th44;
A19: OSClass(P,t2) = OSClass(P,tb) by Def27;
OSClass(P,t1) = OSClass(P,ta) by Def27;
then t1 in OSClass(P,t2) by A8,A19,Th34;
then
A20: M.t1 = M.t2 by Th42;
A21: t1 in SPTA.(LeastSort t1) by Def12;
LeastSort t1 <= s by A7,Def12;
then
A22: [t1,M.t1] in R.s by A2,A21,A17,A16,A18;
then M.t1 in SPTA.s by ZFMISC_1:87;
hence thesis by A7,A9,A20,A22,A4,A15,RELAT_2:def 8;
end;
hence thesis by RELAT_1:def 3;
end;
:: minimality of PTCongruence
theorem
for S be locally_directed regular monotone OrderSortedSign, X be
non-empty ManySortedSet of S holds LCongruence(X) = PTCongruence(X)
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
A1: PTCongruence(X) c= LCongruence(X) by Th45;
LCongruence(X) c= PTCongruence(X) by Def17;
hence thesis by A1,PBOOLE:146;
end;
:: I would prefer attribute "minimal", but non-clusterable
definition
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
mode MinTerm of S,X -> Element of TS DTConOSA(X) means
:Def32:
(PTMin X).it = it;
existence
proof
set t = the Element of TS DTConOSA(X);
take (PTMin X).t;
thus thesis by Th43;
end;
end;
definition
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S;
func MinTerms X -> Subset of TS DTConOSA(X) equals
rng (PTMin X);
correctness by RELAT_1:def 19;
end;
theorem
for S be locally_directed regular monotone OrderSortedSign, X be
non-empty ManySortedSet of S, x being set holds x is MinTerm of S,X iff x in
MinTerms X
proof
let S be locally_directed regular monotone OrderSortedSign, X be non-empty
ManySortedSet of S, x be set;
hereby
assume x is MinTerm of S,X;
then reconsider t =x as MinTerm of S,X;
(PTMin X).t = t by Def32;
hence x in MinTerms X by FUNCT_2:4;
end;
assume x in MinTerms X;
then consider y being object such that
A1: y in dom (PTMin X) and
A2: x = (PTMin X).y by FUNCT_1:def 3;
reconsider t = y as Element of TS DTConOSA(X) by A1;
(PTMin X).t is Element of TS DTConOSA(X);
then reconsider tx = x as Element of TS DTConOSA(X) by A2;
(PTMin X).tx = tx by A1,A2,Th43;
hence thesis by Def32;
end;