Journal of Formalized Mathematics
Volume 7, 1995
University of Bialystok
Copyright (c) 1995
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Grzegorz Bancerek
- Received October 1, 1995
- MML identifier: PUA2MSS1
- [
Mizar article,
MML identifier index
]
environ
vocabulary RELAT_1, FINSEQ_1, FUNCT_1, ZF_REFLE, AMI_1, BOOLE, PARTFUN1,
UNIALG_1, FUNCT_2, CARD_3, MSUALG_1, UNIALG_2, EQREL_1, SETFAM_1, TARSKI,
FINSEQ_2, PROB_1, PBOOLE, INCPROJ, RELAT_2, GROUP_1, MCART_1, PRALG_1,
TDGROUP, QC_LANG1, PUA2MSS1;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, NAT_1, SETFAM_1,
RELAT_1, STRUCT_0, RELSET_1, FUNCT_1, MCART_1, FINSEQ_1, FINSEQ_2,
PARTFUN1, FUNCT_2, RELAT_2, EQREL_1, AMI_1, PROB_1, CARD_3, PBOOLE,
MSUALG_1, UNIALG_1;
constructors NAT_1, PRVECT_1, EQREL_1, AMI_1, MSUALG_1, PROB_1, MEMBERED,
PARTFUN1, RELAT_1, RELAT_2;
clusters SUBSET_1, STRUCT_0, RELSET_1, FUNCT_1, AMI_1, FINSEQ_1, FINSEQ_2,
FINSEQ_5, UNIALG_1, PRVECT_1, MSUALG_1, MSAFREE, FSM_1, PARTFUN1, NAT_1,
FRAENKEL, RELAT_1, EQREL_1, TOLER_1;
requirements NUMERALS, BOOLE, SUBSET, ARITHM;
begin
definition
let f be non-empty Function;
cluster rng f -> with_non-empty_elements;
end;
definition let X,Y be non empty set;
cluster non empty PartFunc of X,Y;
end;
definition let X be with_non-empty_elements set;
cluster -> non-empty FinSequence of X;
end;
definition let A be non empty set;
cluster homogeneous quasi_total non-empty non empty PFuncFinSequence of A;
end;
definition
cluster non-empty -> non empty UAStr;
end;
definition
let X be non empty with_non-empty_elements set;
cluster -> non empty Element of X;
end;
theorem :: PUA2MSS1:1
for f,g being non-empty Function st product f c= product g holds
dom f = dom g & for x being set st x in dom f holds f.x c= g.x;
theorem :: PUA2MSS1:2
for f,g being non-empty Function st product f = product g holds f = g;
definition let A be non empty set;
let f be PFuncFinSequence of A;
redefine func rng f -> Subset of PFuncs(A*, A);
end;
definition let A,B be non empty set;
let S be non empty Subset of PFuncs(A, B);
redefine mode Element of S -> PartFunc of A,B;
end;
definition
let A be non-empty UAStr;
mode OperSymbol of A is Element of dom the charact of A;
mode operation of A is Element of rng the charact of A;
end;
definition
let A be non-empty UAStr;
let o be OperSymbol of A;
func Den(o, A) -> operation of A equals
:: PUA2MSS1:def 1
(the charact of A).o;
end;
begin :: Partitions
definition let X be set;
cluster -> with_non-empty_elements a_partition of X;
end;
definition
let X be set;
let R be Equivalence_Relation of X;
redefine func Class R -> a_partition of X;
end;
theorem :: PUA2MSS1:3
for X being set, P being a_partition of X, x,a,b being set
st x in a & a in P & x in b & b in P holds a = b;
theorem :: PUA2MSS1:4
for X,Y being set st X is_finer_than Y
for p being FinSequence of X ex q being FinSequence of Y st
product p c= product q;
theorem :: PUA2MSS1:5
for X being set, P,Q being a_partition of X
for f being Function of P,Q st for a being set st a in P holds a c= f.a
for p being FinSequence of P, q being FinSequence of Q holds
product p c= product q iff f*p = q;
theorem :: PUA2MSS1:6
for P being set, f being Function st rng f c= union P
ex p being Function st dom p = dom f & rng p c= P & f in product p;
theorem :: PUA2MSS1:7
for X be set, P being a_partition of X, f being FinSequence of X
ex p being FinSequence of P st f in product p;
theorem :: PUA2MSS1:8
for X,Y being non empty set
for P being a_partition of X, Q being a_partition of Y holds
{[:p,q:] where p is Element of P, q is Element of Q: not contradiction}
is a_partition of [:X,Y:];
theorem :: PUA2MSS1:9
for X being non empty set
for P being a_partition of X holds
{product p where p is Element of P*: not contradiction} is a_partition of X
*;
theorem :: PUA2MSS1:10
for X being non empty set, n be Nat
for P being a_partition of X holds
{product p where p is Element of n-tuples_on P: not contradiction}
is a_partition of n-tuples_on X;
theorem :: PUA2MSS1:11
for X being non empty set, Y be set st Y c= X
for P being a_partition of X holds
{a /\ Y where a is Element of P: a meets Y} is a_partition of Y;
theorem :: PUA2MSS1:12
for f being non empty Function, P being a_partition of dom f holds
{f|a where a is Element of P: not contradiction} is a_partition of f;
definition
let X be set;
func SmallestPartition X -> a_partition of X equals
:: PUA2MSS1:def 2
Class id X;
end;
theorem :: PUA2MSS1:13
for X being non empty set holds
SmallestPartition X = {{x} where x is Element of X: not contradiction};
theorem :: PUA2MSS1:14
for X being set, p being FinSequence of SmallestPartition X
ex q being FinSequence of X st product p = {q};
definition let X be set;
mode IndexedPartition of X -> Function means
:: PUA2MSS1:def 3
rng it is a_partition of X & it is one-to-one;
end;
definition let X be set;
cluster -> one-to-one non-empty IndexedPartition of X;
let P be IndexedPartition of X;
redefine func rng P -> a_partition of X;
end;
definition let X be non empty set;
cluster -> non empty IndexedPartition of X;
end;
definition let X be set, P be a_partition of X;
redefine func id P -> IndexedPartition of X;
end;
definition let X be set;
let P be IndexedPartition of X;
let x be set; assume
x in X;
func P-index_of x -> set means
:: PUA2MSS1:def 4
it in dom P & x in P.it;
end;
theorem :: PUA2MSS1:15
for X being set, P being non-empty Function st Union P = X &
for x,y being set st x in dom P & y in dom P & x <> y holds P.x misses P.y
holds P is IndexedPartition of X;
theorem :: PUA2MSS1:16
for X,Y being non empty set, P being a_partition of Y
for f being Function of X, P st P c= rng f & f is one-to-one
holds f is IndexedPartition of Y;
begin :: Relations generated by operations of partial algebra
scheme IndRelationEx
{A, B() -> non empty set, i() -> Nat,
R0() -> (Relation of A(),B()),
RR(set,set) -> Relation of A(),B()}:
ex R being Relation of A(),B(), F being ManySortedSet of NAT st
R = F.i() & F.0 = R0() &
for i being Nat, R being Relation of A(),B() st R = F.i
holds F.(i+1) = RR(R,i);
scheme RelationUniq
{A, B() -> non empty set, P[set,set]}:
for R1, R2 being Relation of A(), B() st
(for x being Element of A(), y being Element of B() holds
[x,y] in R1 iff P[x,y]) &
(for x being Element of A(), y being Element of B() holds
[x,y] in R2 iff P[x,y])
holds R1 = R2;
scheme IndRelationUniq
{A, B() -> non empty set, i() -> Nat,
R0() -> (Relation of A(),B()),
RR(set,set) -> Relation of A(),B()}:
for R1, R2 being Relation of A(),B() st
(ex F being ManySortedSet of NAT st
R1 = F.i() & F.0 = R0() &
for i being Nat, R being Relation of A(),B() st R = F.i
holds F.(i+1) = RR(R,i)) &
(ex F being ManySortedSet of NAT st
R2 = F.i() & F.0 = R0() &
for i being Nat, R being Relation of A(),B() st R = F.i
holds F.(i+1) = RR(R,i))
holds R1 = R2;
definition
let A be partial non-empty UAStr;
func DomRel A -> Relation of the carrier of A means
:: PUA2MSS1:def 5
for x,y being Element of A holds [x,y] in it iff
for f being operation of A, p,q being FinSequence holds
p^<*x*>^q in dom f iff p^<*y*>^q in dom f;
end;
definition
let A be partial non-empty UAStr;
cluster DomRel A -> total symmetric transitive;
end;
definition
let A be non-empty partial UAStr;
let R be Relation of the carrier of A;
func R|^A -> Relation of the carrier of A means
:: PUA2MSS1:def 6
for x,y being Element of A holds
[x,y] in it iff [x,y] in R &
for f being operation of A for p,q being FinSequence
st p^<*x*>^q in dom f & p^<*y*>^q in dom f
holds [f.(p^<*x*>^q), f.(p^<*y*>^q)] in R;
end;
definition
let A be non-empty partial UAStr;
let R be Relation of the carrier of A;
let i be Nat;
func R|^(A,i) -> Relation of the carrier of A means
:: PUA2MSS1:def 7
ex F being ManySortedSet of NAT st it = F.i & F.0 = R &
for i being Nat, R being Relation of the carrier of A st R = F.i
holds F.(i+1) = R|^A;
end;
theorem :: PUA2MSS1:17
for A being non-empty partial UAStr,
R being Relation of the carrier of A
holds R|^(A,0) = R & R|^(A,1) = R|^A;
theorem :: PUA2MSS1:18
for A being non-empty partial UAStr,
i being Nat,
R being Relation of the carrier of A
holds R|^(A,i+1) = R|^(A,i)|^A;
theorem :: PUA2MSS1:19
for A being non-empty partial UAStr,
i,j being Nat,
R being Relation of the carrier of A
holds R|^(A,i+j) = R|^(A,i)|^(A,j);
theorem :: PUA2MSS1:20
for A being non-empty partial UAStr
for R being Equivalence_Relation of the carrier of A st R c= DomRel A
holds R|^A is total symmetric transitive;
theorem :: PUA2MSS1:21
for A being non-empty partial UAStr
for R being Relation of the carrier of A holds R|^A c= R;
theorem :: PUA2MSS1:22
for A being non-empty partial UAStr
for R being Equivalence_Relation of the carrier of A st R c= DomRel A
for i being Nat holds R|^(A,i) is total symmetric transitive;
definition
let A be non-empty partial UAStr;
func LimDomRel A -> Relation of the carrier of A means
:: PUA2MSS1:def 8
for x,y being Element of A holds
[x,y] in it iff for i being Nat holds [x,y] in (DomRel A)|^(A,i);
end;
theorem :: PUA2MSS1:23
for A being non-empty partial UAStr holds LimDomRel A c= DomRel A;
definition
let A be non-empty partial UAStr;
cluster LimDomRel A -> total symmetric transitive;
end;
begin :: Partitability
definition
let X be non empty set;
let f be PartFunc of X*, X;
let P be a_partition of X;
pred f is_partitable_wrt P means
:: PUA2MSS1:def 9
for p being FinSequence of P ex a being Element of P st f.:product p c= a;
end;
definition
let X be non empty set;
let f be PartFunc of X*, X;
let P be a_partition of X;
pred f is_exactly_partitable_wrt P means
:: PUA2MSS1:def 10
f is_partitable_wrt P &
for p being FinSequence of P st product p meets dom f holds
product p c= dom f;
end;
theorem :: PUA2MSS1:24
for A being non-empty partial UAStr
for f being operation of A holds
f is_exactly_partitable_wrt SmallestPartition the carrier of A;
scheme FiniteTransitivity
{x, y() -> FinSequence, P[set], R[set,set]}:
P[y()]
provided
P[x()]
and
len x() = len y()
and
for p,q being FinSequence, z1,z2 being set
st P[p^<*z1*>^q] & R[z1,z2] holds P[p^<*z2*>^q]
and
for i being Nat st i in dom x() holds R[x().i, y().i];
theorem :: PUA2MSS1:25
for A being non-empty partial UAStr
for f being operation of A holds
f is_exactly_partitable_wrt Class LimDomRel A;
definition
let A be partial non-empty UAStr;
mode a_partition of A -> a_partition of the carrier of A means
:: PUA2MSS1:def 11
for f being operation of A holds f is_exactly_partitable_wrt it;
end;
definition
let A be partial non-empty UAStr;
mode IndexedPartition of A -> IndexedPartition of the carrier of A means
:: PUA2MSS1:def 12
rng it is a_partition of A;
end;
definition
let A be partial non-empty UAStr;
let P be IndexedPartition of A;
redefine func rng P -> a_partition of A;
end;
theorem :: PUA2MSS1:26
for A being non-empty partial UAStr holds
Class LimDomRel A is a_partition of A;
theorem :: PUA2MSS1:27
for X being non empty set, P being a_partition of X
for p being FinSequence of P, q1,q2 being FinSequence, x,y being set
st q1^<*x*>^q2 in product p & ex a being Element of P st x in a & y in a
holds q1^<*y*>^q2 in product p;
theorem :: PUA2MSS1:28
for A being partial non-empty UAStr, P being a_partition of A holds
P is_finer_than Class LimDomRel A;
begin :: Morphisms between manysorted signatures
definition
let S1,S2 be ManySortedSign;
let f,g be Function;
pred f,g form_morphism_between S1,S2 means
:: PUA2MSS1:def 13
dom f = the carrier of S1 & dom g = the OperSymbols of S1 &
rng f c= the carrier of S2 & rng g c= the OperSymbols of S2 &
f*the ResultSort of S1 = (the ResultSort of S2)*g &
for o being set, p being Function
st o in the OperSymbols of S1 & p = (the Arity of S1).o
holds f*p = (the Arity of S2).(g.o);
end;
theorem :: PUA2MSS1:29
for S being non void non empty ManySortedSign holds
id the carrier of S, id the OperSymbols of S form_morphism_between S,S;
theorem :: PUA2MSS1:30
for S1,S2,S3 being ManySortedSign
for f1,f2, g1,g2 being Function st
f1, g1 form_morphism_between S1,S2 & f2, g2 form_morphism_between S2,S3
holds f2*f1, g2*g1 form_morphism_between S1,S3;
definition
let S1,S2 be ManySortedSign;
pred S1 is_rougher_than S2 means
:: PUA2MSS1:def 14
ex f,g being Function st f,g form_morphism_between S2,S1 &
rng f = the carrier of S1 & rng g = the OperSymbols of S1;
end;
definition
let S1,S2 be non void non empty ManySortedSign;
redefine pred S1 is_rougher_than S2;
reflexivity;
end;
theorem :: PUA2MSS1:31
for S1,S2,S3 being ManySortedSign
st S1 is_rougher_than S2 & S2 is_rougher_than S3
holds S1 is_rougher_than S3;
begin :: Manysorted signature of partital algebra
definition
let A be partial non-empty UAStr;
let P be a_partition of A;
func MSSign(A,P) -> strict ManySortedSign means
:: PUA2MSS1:def 15
the carrier of it = P &
the OperSymbols of it =
{[o,p] where o is OperSymbol of A, p is Element of P*:
product p meets dom Den(o,A)} &
for o being OperSymbol of A, p being Element of P*
st product p meets dom Den(o,A)
holds (the Arity of it).[o,p] = p &
Den(o, A).:product p c= (the ResultSort of it).[o,p];
end;
definition
let A be partial non-empty UAStr;
let P be a_partition of A;
cluster MSSign(A,P) -> non empty non void;
end;
definition
let A be partial non-empty UAStr;
let P be a_partition of A;
let o be OperSymbol of MSSign(A,P);
redefine
func o`1 -> OperSymbol of A;
func o`2 -> Element of P*;
end;
definition
let A be partial non-empty UAStr;
let S be non void non empty ManySortedSign;
let G be MSAlgebra over S;
let P be IndexedPartition of the OperSymbols of S;
pred A can_be_characterized_by S,G,P means
:: PUA2MSS1:def 16
the Sorts of G is IndexedPartition of A &
dom P = dom the charact of A &
for o being OperSymbol of A holds
(the Charact of G)|(P.o) is IndexedPartition of Den(o, A);
end;
definition
let A be partial non-empty UAStr;
let S be non void non empty ManySortedSign;
pred A can_be_characterized_by S means
:: PUA2MSS1:def 17
ex G being MSAlgebra over S,
P being IndexedPartition of the OperSymbols of S st
A can_be_characterized_by S,G,P;
end;
theorem :: PUA2MSS1:32
for A being partial non-empty UAStr, P being a_partition of A
holds A can_be_characterized_by MSSign(A, P);
theorem :: PUA2MSS1:33
for A being partial non-empty UAStr
for S being non void non empty ManySortedSign
for G being MSAlgebra over S
for Q being IndexedPartition of the OperSymbols of S
st A can_be_characterized_by S,G,Q
for o being OperSymbol of A, r being FinSequence of rng the Sorts of G
st product r c= dom Den(o,A)
ex s being OperSymbol of S st
(the Sorts of G)*the_arity_of s = r & s in Q.o;
theorem :: PUA2MSS1:34
for A being partial non-empty UAStr, P being a_partition of A
st P = Class LimDomRel A
for S being non void non empty ManySortedSign st A can_be_characterized_by S
holds MSSign(A,P) is_rougher_than S;
Back to top