Journal of Formalized Mathematics
Volume 9, 1997
University of Bialystok
Copyright (c) 1997
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Artur Kornilowicz
- Received June 19, 1997
- MML identifier: BIRKHOFF
- [
Mizar article,
MML identifier index
]
environ
vocabulary AMI_1, MSUALG_1, ZF_REFLE, PBOOLE, PRALG_1, MSAFREE, ALG_1,
REALSET1, MSUALG_3, FUNCT_6, FUNCT_1, RELAT_1, GROUP_6, WELLORD1,
MSUALG_2, PRALG_2, CARD_3, MSUALG_5, MSUALG_4, FUNCOP_1, BOOLE, RLVECT_2,
EQREL_1, CLOSURE2, SETFAM_1, FUNCT_4, BORSUK_1, CANTOR_1, EQUATION,
ZF_MODEL, MCART_1, FREEALG, NATTRA_1, MSAFREE2, PRE_CIRC, BIRKHOFF;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, SETFAM_1, RELAT_1,
MCART_1, STRUCT_0, FUNCT_1, RELSET_1, FUNCT_2, EQREL_1, CARD_3, CANTOR_1,
PBOOLE, PRALG_1, MSUALG_1, MSUALG_2, PRALG_3, MSUALG_3, AUTALG_1,
MSAFREE, MSAFREE2, PRALG_2, PRE_CIRC, MSUALG_4, PZFMISC1, EXTENS_1,
MSSUBFAM, CLOSURE2, MSUALG_5, EQUATION;
constructors CANTOR_1, PRALG_3, PRE_CIRC, MSAFREE2, AUTALG_1, EXTENS_1,
PZFMISC1, CLOSURE2, MSUALG_5, BINOP_1, EQUATION, MSUALG_6, MSSUBFAM;
clusters CANTOR_1, CLOSURE2, FUNCT_1, MSAFREE2, MSUALG_1, MSUALG_2, MSUALG_4,
MSUALG_5, MSUALG_9, PBOOLE, PRALG_1, PRALG_3, RELSET_1, STRUCT_0,
EQUATION, EXTENS_1, MEMBERED, ORDINAL2;
requirements SUBSET, BOOLE;
begin :: Birkhoff Variety Theorem
::-------------------------------------------------------------------
:: Acknowledgements:
:: =================
::
:: I would like to thank Professor Andrzej Trybulec
:: for his help in the preparation of the article.
::-------------------------------------------------------------------
definition let S be non empty non void ManySortedSign,
X be non-empty ManySortedSet of the carrier of S,
A be non-empty MSAlgebra over S,
F be ManySortedFunction of X, the Sorts of A;
func F-hash -> ManySortedFunction of FreeMSA X, A means
:: BIRKHOFF:def 1
it is_homomorphism FreeMSA X, A &
it || FreeGen X = F ** Reverse X;
end;
theorem :: BIRKHOFF:1
for S being non empty non void ManySortedSign
for A being non-empty MSAlgebra over S
for X being non-empty ManySortedSet of the carrier of S
for F being ManySortedFunction of X, the Sorts of A
holds rngs F c= rngs (F-hash);
:: Let P[] be a non empty abstract class of algebras. If P[] is closed under
:: subalgebras and products, the free algebras exist in P[].
scheme ExFreeAlg_1 { S() -> non empty non void ManySortedSign,
X() -> non-empty MSAlgebra over S(),
P[set] } :
ex A being strict non-empty MSAlgebra over S(),
F being ManySortedFunction of X(), A st P[A] & F is_epimorphism X(), A &
for B being non-empty MSAlgebra over S()
for G being ManySortedFunction of X(), B st G is_homomorphism X(), B & P[B]
ex H being ManySortedFunction of A, B st H is_homomorphism A, B &
H ** F = G &
for K being ManySortedFunction of A, B st K ** F = G holds H = K
provided
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B] and
for I being set, F being MSAlgebra-Family of I, S() st
(for i being set st i in I ex A being MSAlgebra over S() st A = F.i
& P[A]) holds P[product F];
scheme ExFreeAlg_2 { S() -> non empty non void ManySortedSign,
X() -> non-empty ManySortedSet of the carrier of S(),
P[set] } :
ex A being strict non-empty MSAlgebra over S(),
F being ManySortedFunction of X(), the Sorts of A st P[A] &
for B being non-empty MSAlgebra over S()
for G being ManySortedFunction of X(), the Sorts of B st P[B]
ex H being ManySortedFunction of A, B st H is_homomorphism A, B &
H ** F = G &
for K being ManySortedFunction of A, B st
K is_homomorphism A, B & K ** F = G holds H = K
provided
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B] and
for I being set, F being MSAlgebra-Family of I, S() st
(for i being set st i in I ex A being MSAlgebra over S() st A = F.i
& P[A]) holds P[product F];
scheme Ex_hash { S() -> non empty non void ManySortedSign,
F, A() -> non-empty MSAlgebra over S(),
fi() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of F(),
a() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of A(),
P[set] } :
ex H being ManySortedFunction of F(), A() st
H is_homomorphism F(), A() & a()-hash = H ** (fi()-hash)
provided
P[A()] and
for C being non-empty MSAlgebra over S() :: F() is free in P[]
for G being ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of C st P[C]
ex h being ManySortedFunction of F(), C st
h is_homomorphism F(), C & G = h ** fi();
:: Let P[] be a class of algebras. If a free algebra F() in P[]
:: relative to fi() exists, then
:: P[] |= [t1(),t2()] iff (F(),fi()) |= [t1(),t2()].
scheme EqTerms { S() -> non empty non void ManySortedSign,
F() -> non-empty MSAlgebra over S(),
fi() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of F(),
s() -> SortSymbol of S(),
t1, t2() -> Element of (the Sorts of TermAlg S()).s(),
P[set] } :
for B being non-empty MSAlgebra over S() st P[B] holds B |= [t1(),t2()]
provided
fi()-hash.s().t1() = fi()-hash.s().t2() and
for C being non-empty MSAlgebra over S() :: F() is free in P[]
for G being ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of C st P[C]
ex h being ManySortedFunction of F(), C st
h is_homomorphism F(), C & G = h ** fi();
:: Let P[] be an abstract class of algebras such that P[] is closed under
:: subalgebras. The free algebra in P[] over X(), if it exists,
:: is generated by X().
scheme FreeIsGen { S() -> non empty non void ManySortedSign,
X() -> non-empty ManySortedSet of the carrier of S(),
A() -> strict non-empty MSAlgebra over S(),
f() -> ManySortedFunction of X(), the Sorts of A(),
P[set] } :
f().:.:X() is non-empty GeneratorSet of A()
provided
for C being non-empty MSAlgebra over S() :: A() is free in P[]
for G being ManySortedFunction of X(), the Sorts of C st P[C]
ex H being ManySortedFunction of A(), C st
H is_homomorphism A(), C & H ** f() = G &
for K being ManySortedFunction of A(), C st
K is_homomorphism A(), C & K ** f() = G holds H = K and
P[A()] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B];
scheme Hash_is_onto { S() -> non empty non void ManySortedSign,
A() -> strict non-empty MSAlgebra over S(),
F() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of A(),
P[set] } :
F()-hash is_epimorphism FreeMSA ((the carrier of S()) --> NAT), A()
provided
for C being non-empty MSAlgebra over S() :: A() is free in P[]
for G being ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of C st P[C]
ex H being ManySortedFunction of A(), C st
H is_homomorphism A(), C & H ** F() = G &
for K being ManySortedFunction of A(), C st
K is_homomorphism A(), C & K ** F() = G holds H = K and
P[A()] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B];
scheme FinGenAlgInVar { S() -> non empty non void ManySortedSign,
A() -> strict finitely-generated (non-empty MSAlgebra over S()),
F() -> non-empty MSAlgebra over S(),
fi() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of F(),
P, Q[set] } :
P[A()]
provided
Q[A()] and
P[F()] and
for C being non-empty MSAlgebra over S() :: F() is free in Q[]
for G being ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of C st Q[C]
ex h being ManySortedFunction of F(), C st
h is_homomorphism F(), C & G = h ** fi() and
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S(), R being MSCongruence of A st
P[A] holds P[QuotMSAlg (A,R)];
scheme QuotEpi { S() -> non empty non void ManySortedSign,
X, Y() -> non-empty MSAlgebra over S(),
P[set] } :
P[Y()]
provided
ex H being ManySortedFunction of X(), Y() st H is_epimorphism X(), Y() and
P[X()] and
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S(), R being MSCongruence of A st
P[A] holds P[QuotMSAlg (A,R)];
:: An algebra X() belongs to a variety P[] whenever all its finitely
:: generated subalgebras are in P[].
scheme AllFinGen { S() -> non empty non void ManySortedSign,
X() -> non-empty MSAlgebra over S(),
P[set] } :
P[X()]
provided
for B being strict non-empty finitely-generated MSSubAlgebra of X()
holds P[B] and
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B] and
for A being non-empty MSAlgebra over S(), R being MSCongruence of A st
P[A] holds P[QuotMSAlg (A,R)] and
for I being set, F being MSAlgebra-Family of I, S() st
(for i being set st i in I ex A being MSAlgebra over S() st A = F.i
& P[A]) holds P[product F];
scheme FreeInModIsInVar_1 { S() -> non empty non void ManySortedSign,
X() -> non-empty MSAlgebra over S(),
P, Q[set] } :
Q[X()]
provided
for A being non-empty MSAlgebra over S() holds Q[A] iff
for s being SortSymbol of S(), e being Element of (Equations S()).s st
(for B being non-empty MSAlgebra over S() st P[B] holds B |= e)
holds A |= e and
P[X()];
:: If P[] is a non empty variety, then the free algebras in Mod Eq P[]
:: belong to P[]. (Q[] = Mod Eq P[])
scheme FreeInModIsInVar { S() -> non empty non void ManySortedSign,
X() -> strict non-empty MSAlgebra over S(),
psi() -> ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of X(),
P, Q[set] } :
P[X()]
provided
for A being non-empty MSAlgebra over S() holds Q[A] iff
for s being SortSymbol of S(), e being Element of (Equations S()).s st
(for B being non-empty MSAlgebra over S() st P[B] holds B |= e)
holds A |= e and
for C being non-empty MSAlgebra over S() :: X() is free in Q[]
for G being ManySortedFunction of (the carrier of S()) --> NAT,
the Sorts of C st Q[C]
ex H being ManySortedFunction of X(), C st
H is_homomorphism X(), C & H ** psi() = G &
for K being ManySortedFunction of X(), C st
K is_homomorphism X(), C & K ** psi() = G holds H = K and
Q[X()] and
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B] and
for I being set, F being MSAlgebra-Family of I, S() st
(for i being set st i in I ex A being MSAlgebra over S() st A = F.i
& P[A]) holds P[product F];
:: Let P[] be an abstract class of algebras. Then P[] is an equational class
:: if and only if P[] is variety.
scheme Birkhoff { S() -> non empty non void ManySortedSign,
P[set] } :
ex E being EqualSet of S() st for A being non-empty MSAlgebra over S() holds
P[A] iff A |= E
provided
for A, B being non-empty MSAlgebra over S() st A, B are_isomorphic &
P[A] holds P[B] and
for A being non-empty MSAlgebra over S()
for B being strict non-empty MSSubAlgebra of A st P[A] holds P[B] and
for A being non-empty MSAlgebra over S(), R being MSCongruence of A st
P[A] holds P[QuotMSAlg (A,R)] and
for I being set, F being MSAlgebra-Family of I, S() st
(for i being set st i in I ex A being MSAlgebra over S() st A = F.i
& P[A]) holds P[product F];
Back to top