:: Hilbert Basis Theorem
:: by Jonathan Backer and Piotr Rudnicki
::
:: Received November 27, 2000
:: Copyright (c) 2000-2019 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 NUMBERS, FINSEQ_1, FUNCT_1, RELAT_1, XBOOLE_0, TARSKI, ORDINAL4,
NAT_1, XXREAL_0, ARYTM_3, PRE_POLY, CARD_1, FUNCOP_1, PARTFUN1, SUBSET_1,
ARYTM_1, FUNCT_4, ORDINAL1, PBOOLE, FINSET_1, ORDERS_1, VECTSP_1,
ZFMISC_1, ALGSTR_0, POLYNOM2, GROUP_1, POLYNOM1, SUPINF_2, RLVECT_1,
ALGSEQ_1, LATTICES, POLYNOM3, STRUCT_0, CARD_3, CARD_FIL, QUOFIELD,
MSSUBFAM, IDEAL_1, PRELAMB, BINOP_1, FUNCT_2, HILBASIS, RECDEF_2;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, PBOOLE, RELAT_1, FINSET_1,
FUNCT_1, PARTFUN1, ORDINAL1, CARD_1, NUMBERS, XCMPLX_0, XXREAL_0, NAT_1,
RELSET_1, FUNCT_2, FUNCOP_1, FINSEQ_1, FUNCT_4, BINOP_1, XXREAL_2,
MCART_1, FINSEQOP, FINSEQ_2, FUNCT_7, PRE_POLY, DOMAIN_1, STRUCT_0,
ALGSTR_0, RLVECT_1, VFUNCT_1, GROUP_1, VECTSP_1, NORMSP_1, POLYNOM1,
POLYNOM2, POLYNOM3, ALGSEQ_1, NAT_D, IDEAL_1, TOPS_2, GRCAT_1, WSIERP_1,
ORDERS_1, GROUP_6, QUOFIELD, RECDEF_1, MATRLIN;
constructors FINSEQOP, NAT_D, REAL_1, WSIERP_1, TOPS_2, ALGSEQ_1, GRCAT_1,
GROUP_6, MATRIX_1, TRIANG_1, QUOFIELD, POLYNOM2, POLYNOM3, IDEAL_1,
RECDEF_1, XXREAL_2, DOMAIN_1, BINARITH, RELSET_1, FUNCT_7, MATRLIN,
VFUNCT_1, FUNCT_4, MOD_4, RINGCAT1;
registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, FUNCOP_1, FINSET_1,
XXREAL_0, XREAL_0, NAT_1, INT_1, CARD_1, MEMBERED, FINSEQ_1, CARD_5,
PRE_CIRC, STRUCT_0, VECTSP_1, ALGSTR_1, WAYBEL_2, GCD_1, PRE_POLY,
POLYNOM1, POLYNOM2, POLYNOM3, IDEAL_1, VALUED_0, ALGSTR_0, XXREAL_2,
VFUNCT_1, FUNCT_2, RELSET_1, MOD_4, RINGCAT1;
requirements NUMERALS, REAL, SUBSET, BOOLE, ARITHM;
begin :: Preliminaries
theorem :: HILBASIS:1
for A,B being FinSequence, f being Function st rng A \/ rng B c=
dom f ex fA, fB being FinSequence st fA = f*A & fB = f*B & f*(A^B) = fA^fB;
theorem :: HILBASIS:2
for b being bag of {} holds decomp b = <* <* {}, {} *> *>;
theorem :: HILBASIS:3
for i,j being Nat, b being bag of j st i <= j holds (b
|i) is Element of Bags i;
theorem :: HILBASIS:4
for i, j being set, b1, b2 being bag of j, b19,b29 being bag of i
st b19 = (b1|i) & b29 = (b2|i) & b1 divides b2 holds b19 divides b29;
theorem :: HILBASIS:5
for i,j be set, b1, b2 being bag of j, b19, b29 being bag of i st
b19=(b1|i) & b29=(b2|i) holds (b1-' b2)|i = b19-' b29 & (b1+b2)|i = b19+b29;
definition
let n,k be Nat, b be bag of n;
func b bag_extend k -> Element of Bags (n+1) means
:: HILBASIS:def 1
it|n = b & it.n = k;
end;
theorem :: HILBASIS:6
for n being Nat holds EmptyBag (n+1) = (EmptyBag n) bag_extend 0;
theorem :: HILBASIS:7
for n be Ordinal, b, b1 be bag of n holds b1 in rng divisors b
iff b1 divides b;
definition
let X be set, x be Element of X;
func UnitBag x -> Element of Bags X equals
:: HILBASIS:def 2
(EmptyBag X)+*(x, 1);
end;
theorem :: HILBASIS:8
for X being non empty set, x being Element of X holds support UnitBag x = {x}
;
theorem :: HILBASIS:9
for X being non empty set, x being Element of X holds (UnitBag x)
.x = 1 & for y being Element of X st x <> y holds (UnitBag x).y = 0;
theorem :: HILBASIS:10
for X being non empty set, x1, x2 being Element of X st UnitBag
x1 = UnitBag x2 holds x1 = x2;
theorem :: HILBASIS:11
for X being non empty Ordinal, x be Element of X, L being
well-unital non trivial doubleLoopStr, e being Function of X, L
holds eval(UnitBag x, e) = e.x;
definition
let X be set, x be Element of X, L be unital non empty multLoopStr_0;
func 1_1(x,L) -> Series of X, L equals
:: HILBASIS:def 3
0_(X,L)+*(UnitBag x,1_L);
end;
theorem :: HILBASIS:12
for X being set, L being unital non trivial
doubleLoopStr, x be Element of X holds 1_1(x,L).UnitBag x = 1_L & for b being
bag of X st b <> UnitBag x holds 1_1(x,L).b = 0.L;
theorem :: HILBASIS:13
for X being set, x being Element of X, L being add-associative
right_zeroed right_complementable well-unital right-distributive
non trivial doubleLoopStr holds Support 1_1(x,L) = {UnitBag x};
registration
let X be Ordinal, x be Element of X, L be add-associative right_zeroed
right_complementable well-unital right-distributive non trivial
doubleLoopStr;
cluster 1_1(x,L) -> finite-Support;
end;
theorem :: HILBASIS:14
for L being add-associative right_zeroed right_complementable
well-unital right-distributive non trivial doubleLoopStr, X being
non empty set, x1, x2 being Element of X st 1_1(x1,L) = 1_1(x2,L) holds x1 = x2
;
theorem :: HILBASIS:15
for L being add-associative right_zeroed right_complementable
distributive non empty doubleLoopStr, x being Element of Polynom-Ring L, p be
sequence of L st x = p holds -x = -p;
theorem :: HILBASIS:16
for L being add-associative right_zeroed right_complementable
distributive non empty doubleLoopStr, x, y being Element of Polynom-Ring L, p
, q be sequence of L st x = p & y = q holds x-y = p-q;
definition
let L be right_zeroed add-associative right_complementable well-unital
distributive non empty doubleLoopStr;
let I be non empty Subset of Polynom-Ring L;
func minlen(I) -> non empty Subset of I equals
:: HILBASIS:def 4
{ x where x is Element of I :
for x9,y9 being Polynomial of L st x9=x & y9 in I holds len x9 <= len y9 };
end;
theorem :: HILBASIS:17
for L be right_zeroed add-associative right_complementable
well-unital distributive non empty doubleLoopStr, I be non empty Subset of
Polynom-Ring L, i1, i2 be Polynomial of L st i1 in minlen(I) & i2 in I holds i1
in I & len i1 <= len i2;
definition
let L be right_zeroed add-associative right_complementable well-unital
distributive non empty doubleLoopStr, n be Nat, a be Element of L;
func monomial(a,n) -> Polynomial of L means
:: HILBASIS:def 5
for x being Nat holds (x = n implies it.x = a) & (x <> n implies it.x = 0.L);
end;
theorem :: HILBASIS:18
for L be right_zeroed add-associative right_complementable
well-unital distributive non empty doubleLoopStr, n be Element of NAT, a be
Element of L holds (a <> 0.L implies len monomial(a,n) = n+1) & (a = 0.L
implies len monomial(a,n) = 0) & len monomial (a,n) <= n+1;
theorem :: HILBASIS:19
for L be right_zeroed add-associative right_complementable
well-unital distributive non empty doubleLoopStr, n, x be Element of NAT, a
be Element of L, p be Polynomial of L holds (monomial(a,n)*'p).(x+n) = a * (p.x
);
theorem :: HILBASIS:20
for L be right_zeroed add-associative right_complementable
well-unital distributive non empty doubleLoopStr, n, x be Element of NAT, a
be Element of L, p be Polynomial of L holds (p*'monomial(a,n)).(x+n) = (p.x) *
a;
theorem :: HILBASIS:21
for L be right_zeroed add-associative right_complementable
well-unital distributive non empty doubleLoopStr, p, q be Polynomial of L
holds len (p*'q) <= (len p)+(len q)-'1;
begin :: On Ring isomorphism
theorem :: HILBASIS:22
for R,S being non empty doubleLoopStr, I being Ideal of R, P
being Function of R,S st P is RingIsomorphism holds P.:I is Ideal of S;
theorem :: HILBASIS:23
for R,S being add-associative right_zeroed right_complementable
non empty doubleLoopStr, f being Function of R, S st f is RingHomomorphism
holds f.(0.R) = 0.S;
theorem :: HILBASIS:24
for R, S being add-associative right_zeroed right_complementable
non empty doubleLoopStr, F being non empty Subset of R, G being non empty
Subset of S, P being Function of R, S, lc being LinearCombination of F, LC
being LinearCombination of G, E being FinSequence of [:the carrier of R, the
carrier of R, the carrier of R:] st P is RingHomomorphism & len lc = len LC & E
represents lc & (for i being set st i in dom LC
holds LC.i = (P.((E/.i)`1_3))*(P.((E /.i)`2_3))*(P.((E/.i)`3_3)))
holds P.(Sum lc) = Sum LC;
theorem :: HILBASIS:25
for R, S be non empty doubleLoopStr, P be Function of R, S st P
is RingIsomorphism holds P" is RingIsomorphism;
theorem :: HILBASIS:26
for R,S being Abelian add-associative right_zeroed
right_complementable associative distributive well-unital non empty
doubleLoopStr, F being non empty Subset of R, P being Function of R,S st P is
RingIsomorphism holds P.:(F-Ideal) = (P.:F)-Ideal;
theorem :: HILBASIS:27
for R,S being Abelian add-associative right_zeroed
right_complementable associative distributive well-unital non empty
doubleLoopStr, P being Function of R,S st P is RingIsomorphism & R is
Noetherian holds S is Noetherian;
theorem :: HILBASIS:28
for R being add-associative right_zeroed right_complementable
associative Abelian distributive well-unital non trivial
doubleLoopStr holds ex P being Function of R, Polynom-Ring (0,R) st P is
RingIsomorphism;
theorem :: HILBASIS:29
for R being right_zeroed add-associative right_complementable
well-unital distributive non trivial doubleLoopStr, n being Nat,
b being bag of n, p1 being Polynomial of n, R, F being FinSequence of
the carrier of Polynom-Ring (n,R) st p1 = Sum F ex g being Function of the
carrier of Polynom-Ring (n, R), the carrier of R st (for p being Polynomial of
n, R holds g.p = p.b) & p1.b = Sum (g*F);
definition
let R be Abelian add-associative right_zeroed right_complementable
associative distributive well-unital commutative non trivial
doubleLoopStr, n be Nat;
func upm (n,R) -> Function of Polynom-Ring (Polynom-Ring(n,R)), Polynom-Ring
(n+1,R) means
:: HILBASIS:def 6
for p1 being (Polynomial of Polynom-Ring (n,R)), p2 being
(Polynomial of n, R), p3 being (Polynomial of (n+1), R), b being bag of n+1 st
p3 = it.p1 & p2 = p1.(b.n) holds p3.b = p2.(b|n);
end;
registration
let R be Abelian add-associative right_zeroed right_complementable
associative distributive well-unital commutative non trivial
doubleLoopStr, n be Nat;
cluster upm (n,R) -> additive;
cluster upm (n,R) -> multiplicative;
cluster upm (n,R) -> unity-preserving;
cluster upm (n,R) -> one-to-one;
end;
definition
let R be Abelian add-associative right_zeroed right_complementable
associative distributive well-unital commutative non trivial
doubleLoopStr, n be Nat;
func mpu (n,R) -> Function of Polynom-Ring (n+1,R), Polynom-Ring
Polynom-Ring(n,R) means
:: HILBASIS:def 7
for p1 being (Polynomial of n+1,R), p2 being (
Polynomial of n, R), p3 being (Polynomial of Polynom-Ring (n, R)), i being
Element of NAT, b being bag of n st p3 = it.p1 & p2 = p3.i holds p2.b = p1.(b
bag_extend i);
end;
theorem :: HILBASIS:30
for R being Abelian add-associative right_zeroed
right_complementable associative distributive well-unital commutative non
trivial non empty doubleLoopStr, n being Nat, p being Element of
Polynom-Ring (n+1,R) holds upm(n,R).(mpu(n,R).p) = p;
theorem :: HILBASIS:31
for R being Abelian add-associative right_zeroed
right_complementable associative distributive well-unital commutative non
trivial non empty doubleLoopStr, n being Nat ex P being Function
of Polynom-Ring (Polynom-Ring(n,R)),Polynom-Ring(n+1,R) st P is RingIsomorphism
;
begin :: Hilbert basis theorem
registration
let R be Noetherian Abelian add-associative right_zeroed
right_complementable associative distributive well-unital commutative non
empty doubleLoopStr;
::$N Hilbert Basis Theorem
cluster Polynom-Ring R -> Noetherian;
end;
theorem :: HILBASIS:32
for R being Abelian add-associative right_zeroed
right_complementable associative distributive well-unital
commutative non trivial doubleLoopStr st R is Noetherian
for n being Nat holds Polynom-Ring (n,R) is Noetherian;
theorem :: HILBASIS:33
for F being Field holds F is Noetherian;
theorem :: HILBASIS:34
for F being Field, n being Element of NAT holds Polynom-Ring (n,F) is
Noetherian;
theorem :: HILBASIS:35
for R being Abelian right_zeroed add-associative right_complementable
well-unital distributive associative commutative non trivial
doubleLoopStr, X be infinite Ordinal holds Polynom-Ring (X,R) is non
Noetherian;