Journal of Formalized Mathematics
Volume 6, 1994
University of Bialystok
Copyright (c) 1994
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Andrzej Trybulec
- Received December 13, 1994
- MML identifier: MSAFREE1
- [
Mizar article,
MML identifier index
]
environ
vocabulary FUNCT_1, CARD_3, RELAT_1, PROB_1, LANG1, DTCONSTR, TREES_4,
FINSEQ_1, TDGROUP, TREES_2, TREES_3, AMI_1, MSUALG_1, PBOOLE, FREEALG,
BOOLE, MSAFREE, QC_LANG1, ZF_REFLE, TARSKI, MATRIX_1, PROB_2, PRALG_1,
FINSEQ_4, MCART_1, ALG_1, MSAFREE1;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NAT_1, RELAT_1, FUNCT_1,
FUNCT_2, STRUCT_0, MCART_1, FINSEQ_1, MULTOP_1, PROB_2, CARD_3, FINSEQ_4,
TREES_2, TREES_3, TREES_4, AMI_1, LANG1, DTCONSTR, PROB_1, PBOOLE,
MSUALG_1, MSAFREE, MSUALG_3;
constructors MULTOP_1, PROB_2, AMI_1, MSAFREE, MSUALG_3, FINSOP_1, FINSEQ_4,
MEMBERED, XBOOLE_0;
clusters PBOOLE, MSAFREE, PRALG_1, DTCONSTR, AMI_1, MSUALG_1, MSUALG_3,
FUNCT_1, RELSET_1, STRUCT_0, TREES_3, FINSEQ_1, SUBSET_1, ARYTM_3,
ZFMISC_1, XBOOLE_0;
requirements BOOLE, SUBSET;
begin
theorem :: MSAFREE1:1
for f,g being Function st g in product f
holds rng g c= Union f;
scheme DTConstrUniq{DT()->non empty DTConstrStr, D()->non empty set,
G(set) -> Element of D(),
H(set, set, set) -> Element of D(),
f1, f2() -> Function of TS(DT()), D()
}:
f1() = f2()
provided
for t being Symbol of DT() st t in Terminals DT()
holds f1().(root-tree t) = G(t) and
for nt being Symbol of DT(),
ts being FinSequence of TS(DT()) st nt ==> roots ts
for x being FinSequence of D() st x = f1() * ts
holds f1().(nt-tree ts) = H(nt, ts, x) and
for t being Symbol of DT() st t in Terminals DT()
holds f2().(root-tree t) = G(t) and
for nt being Symbol of DT(),
ts being FinSequence of TS(DT()) st nt ==> roots ts
for x being FinSequence of D() st x = f2() * ts
holds f2().(nt-tree ts) = H(nt, ts, x);
theorem :: MSAFREE1:2 :: MSAFREE:5
for S being non void non empty ManySortedSign,
X being ManySortedSet of the carrier of S
for o,b being set st [o,b] in REL(X) holds
o in [:the OperSymbols of S,{the carrier of S}:] &
b in ([:the OperSymbols of S,{the carrier of S}:] \/ Union coprod X)*;
theorem :: MSAFREE1:3 :: MSAFREE:5
for S being non void non empty ManySortedSign,
X being ManySortedSet of the carrier of S
for o being OperSymbol of S, b being FinSequence st
[[o,the carrier of S],b] in REL(X) holds
len b = len (the_arity_of o) &
for x be set st x in dom b holds
(b.x in [:the OperSymbols 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 b.x in coprod((the_arity_of o).x,X));
definition let D be set;
redefine mode FinSequence of D -> Element of D*;
end;
definition let I be non empty set, M be non-empty ManySortedSet of I;
cluster rng M -> non empty with_non-empty_elements;
end;
definition let D be non empty with_non-empty_elements set;
cluster union D -> non empty;
end;
definition let I be set;
cluster empty-yielding -> disjoint_valued ManySortedSet of I;
end;
definition let I be set;
cluster disjoint_valued ManySortedSet of I;
end;
definition let I be non empty set;
let X be disjoint_valued ManySortedSet of I;
let D be non-empty ManySortedSet of I;
let F be ManySortedFunction of X,D;
func Flatten F -> Function of Union X, Union D means
:: MSAFREE1:def 1
for i being Element of I, x being set st x in X.i
holds it.x = F.i.x;
end;
theorem :: MSAFREE1:4
for I being non empty set,
X being disjoint_valued ManySortedSet of I,
D being non-empty ManySortedSet of I
for F1,F2 be ManySortedFunction of X,D st Flatten F1 = Flatten F2
holds F1 = F2;
definition let S be non empty ManySortedSign;
let A be MSAlgebra over S;
attr A is disjoint_valued means
:: MSAFREE1:def 2
the Sorts of A is disjoint_valued;
end;
definition let S be non empty ManySortedSign;
func SingleAlg S -> strict MSAlgebra over S means
:: MSAFREE1:def 3
for i being set st i in the carrier of S
holds (the Sorts of it).i = {i};
end;
definition let S be non empty ManySortedSign;
cluster non-empty disjoint_valued MSAlgebra over S;
end;
definition let S be non empty ManySortedSign;
cluster SingleAlg S -> non-empty disjoint_valued;
end;
definition let S be non empty ManySortedSign;
let A be disjoint_valued MSAlgebra over S;
cluster the Sorts of A -> disjoint_valued;
end;
theorem :: MSAFREE1:5
for S being non void non empty ManySortedSign, o being OperSymbol of S,
A1 be non-empty disjoint_valued MSAlgebra over S,
A2 be non-empty MSAlgebra over S,
f be ManySortedFunction of A1,A2,
a be Element of Args(o,A1)
holds (Flatten f)*a = f#a;
definition
let S be non void non empty ManySortedSign,
X be non-empty ManySortedSet of the carrier of S;
cluster FreeSort X -> disjoint_valued;
end;
scheme FreeSortUniq{ S() -> non void non empty ManySortedSign,
X,D() -> non-empty ManySortedSet of the carrier of S(),
G(set) -> Element of Union D(),
H(set, set, set) -> Element of Union D(),
f1, f2() -> ManySortedFunction of FreeSort X(), D()
}:
f1() = f2()
provided
for o being OperSymbol of S(),
ts being Element of Args(o,FreeMSA X())
for x being FinSequence of Union D() st x = (Flatten f1()) * ts holds
f1().(the_result_sort_of o).(Den(o,FreeMSA X()).ts)
= H(o, ts, x)
and
for s being SortSymbol of S(), y be set st y in FreeGen(s,X())
holds f1().s.y = G(y) and
for o being OperSymbol of S(), ts being Element of Args(o,FreeMSA X())
for x being FinSequence of Union D() st x = (Flatten f2()) * ts holds
f2().(the_result_sort_of o).(Den(o,FreeMSA X()).ts)
= H(o, ts, x)
and
for s being SortSymbol of S(), y be set st y in FreeGen(s,X())
holds f2().s.y = G(y);
definition let S be non void non empty ManySortedSign;
let X be non-empty ManySortedSet of the carrier of S;
cluster FreeMSA X -> non-empty;
end;
definition let S be non void non empty ManySortedSign;
let o be OperSymbol of S; let A be non-empty MSAlgebra over S;
cluster Args(o,A) -> non empty;
cluster Result(o,A) -> non empty;
end;
definition
let S be non void non empty ManySortedSign,
X be non-empty ManySortedSet of the carrier of S;
cluster the Sorts of FreeMSA X -> disjoint_valued;
end;
definition
let S be non void non empty ManySortedSign,
X be non-empty ManySortedSet of the carrier of S;
cluster FreeMSA X -> disjoint_valued;
end;
scheme ExtFreeGen{ S() -> non void non empty ManySortedSign,
X() -> non-empty ManySortedSet of the carrier of S(),
MSA() -> non-empty MSAlgebra over S(),
P[set,set,set],
IT1, IT2() -> ManySortedFunction of FreeMSA X(), MSA()
}:
IT1() = IT2()
provided
IT1() is_homomorphism FreeMSA X(), MSA() and
for s being SortSymbol of S(), x,y being set st y in FreeGen(s,X())
holds IT1().s.y = x iff P[s,x,y] and
IT2() is_homomorphism FreeMSA X(), MSA() and
for s being SortSymbol of S(), x,y being set st y in FreeGen(s,X())
holds IT2().s.y = x iff P[s,x,y];
Back to top