:: The Field of Quotients over an Integral Domain
:: by Christoph Schwarzweller
::
:: Received May 4, 1998
:: Copyright (c) 1998-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 XBOOLE_0, STRUCT_0, SUBSET_1, ZFMISC_1, SUPINF_2, ALGSTR_0,
MESFUNC1, MCART_1, VECTSP_2, RELAT_1, ARYTM_3, BINOP_1, RLVECT_1,
LATTICES, SETFAM_1, FUNCSDOM, GROUP_1, ARYTM_1, FUNCT_1, VECTSP_1,
MSSUBFAM, TARSKI, QUOFIELD, FUNCT_2, FDIFF_1, MOD_4;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, RELAT_1, XTUPLE_0, MCART_1,
FUNCT_1, RELSET_1, PARTFUN1, FUNCT_2, SETFAM_1, BINOP_1, DOMAIN_1,
STRUCT_0, ALGSTR_0, RLVECT_1, GROUP_1, VECTSP_2, VECTSP_1, TOPS_2,
GRCAT_1, GCD_1, GROUP_6, RINGCAT1, MOD_4;
constructors DOMAIN_1, TOPS_2, GRCAT_1, GROUP_6, GCD_1, ALGSTR_1, RELSET_1,
XTUPLE_0, RINGCAT1, MOD_4;
registrations SUBSET_1, RELSET_1, FUNCT_2, STRUCT_0, VECTSP_1, ALGSTR_1,
GCD_1, XTUPLE_0, RINGCAT1, MOD_4;
requirements SUBSET, BOOLE;
begin :: Definition of Pairs
definition
let I be non empty ZeroStr;
func Q.I -> Subset of [:the carrier of I,the carrier of I:] means
:: QUOFIELD:def 1
for u being set holds
u in it iff ex a,b being Element of I st u = [a,b] & b <> 0.I;
end;
theorem :: QUOFIELD:1
for I being non degenerated non empty multLoopStr_0 holds Q.I is non empty;
registration
let I be non degenerated non empty multLoopStr_0;
cluster Q.I -> non empty;
end;
theorem :: QUOFIELD:2
for I being non degenerated non empty multLoopStr_0 for u being
Element of Q.I holds u`2 <> 0.I;
:: Definition and some Properties of Pair Addition and Multiplication
definition
let I be non degenerated domRing-like non empty doubleLoopStr;
let u,v be Element of Q.I;
func padd(u,v) -> Element of Q.I equals
:: QUOFIELD:def 2
[u`1 * v`2 + v`1 * u`2, u`2 * v`2];
end;
definition
let I be non degenerated domRing-like non empty doubleLoopStr;
let u,v be Element of Q.I;
func pmult(u,v) -> Element of Q.I equals
:: QUOFIELD:def 3
[u`1 * v`1, u`2 * v`2];
end;
theorem :: QUOFIELD:3
for I being non degenerated domRing-like associative commutative
Abelian add-associative distributive non empty doubleLoopStr for u,v,w being
Element of Q.I holds padd(u,padd(v,w)) = padd(padd(u,v),w);
theorem :: QUOFIELD:4
for I being non degenerated domRing-like associative commutative
Abelian non empty doubleLoopStr for u,v,w being Element of Q.I holds pmult(u,
pmult(v,w)) = pmult(pmult(u,v),w);
definition
let I be non degenerated domRing-like associative commutative Abelian
add-associative distributive non empty doubleLoopStr;
let u, v be Element of Q.I;
redefine func padd(u,v);
commutativity;
end;
definition
let I be non degenerated domRing-like associative commutative Abelian non
empty doubleLoopStr;
let u, v be Element of Q.I;
redefine func pmult(u,v);
commutativity;
end;
:: Definition of Classes of Pairs
definition
let I be non degenerated non empty multLoopStr_0;
let u be Element of Q.I;
func QClass.u -> Subset of Q.I means
:: QUOFIELD:def 4
for z being Element of Q.I holds z in it iff z`1 * u`2 = z`2 * u`1;
end;
theorem :: QUOFIELD:5
for I being non degenerated commutative non empty multLoopStr_0
for u being Element of Q.I holds u in QClass.u;
registration
let I be non degenerated commutative non empty multLoopStr_0;
let u be Element of Q.I;
cluster QClass.u -> non empty;
end;
definition
let I be non degenerated non empty multLoopStr_0;
func Quot.I -> Subset-Family of Q.I means
:: QUOFIELD:def 5
for A being Subset of Q.I
holds A in it iff ex u being Element of Q.I st A = QClass.u;
end;
theorem :: QUOFIELD:6
for I being non degenerated non empty multLoopStr_0 holds Quot.
I is non empty;
registration
let I be non degenerated non empty multLoopStr_0;
cluster Quot.I -> non empty;
end;
theorem :: QUOFIELD:7
for I being non degenerated domRing-like commutative Ring for u,v
being Element of Q.I holds (ex w being Element of Quot.I st u in w & v in w)
implies u`1 * v`2 = v`1 * u`2;
theorem :: QUOFIELD:8
for I being non degenerated domRing-like commutative Ring for u,v
being Element of Quot.I holds u meets v implies u = v;
begin :: Definition of Quotient Field Addition and Multiplication
definition
let I be non degenerated domRing-like commutative Ring;
let u,v be Element of Quot.I;
func qadd(u,v) -> Element of Quot.I means
:: QUOFIELD:def 6
for z being Element of Q.I
holds z in it iff ex a,b being Element of Q.I st a in u & b in v & z`1 * (a`2 *
b`2) = z`2 * (a`1 * b`2 + b`1 * a`2);
end;
definition
let I be non degenerated domRing-like commutative Ring;
let u,v be Element of Quot.I;
func qmult(u,v) -> Element of Quot.I means
:: QUOFIELD:def 7
for z being Element of Q.I
holds z in it iff ex a,b being Element of Q.I st a in u & b in v & z`1 * (a`2 *
b`2) = z`2 * (a`1 * b`1);
end;
definition
let I be non degenerated non empty multLoopStr_0;
let u be Element of Q.I;
redefine func QClass.u -> Element of Quot.I;
end;
theorem :: QUOFIELD:9
for I being non degenerated domRing-like commutative Ring for u,
v being Element of Q.I holds qadd(QClass.u,QClass.v) = QClass.(padd(u,v));
theorem :: QUOFIELD:10
for I being non degenerated domRing-like commutative Ring for u,
v being Element of Q.I holds qmult(QClass.u,QClass.v) = QClass.(pmult(u,v));
:: Properties of Quotient Field Addition and Multiplication
definition
let I be non degenerated domRing-like commutative Ring;
func q0.I -> Element of Quot.I means
:: QUOFIELD:def 8
for z being Element of Q.I holds z in it iff z`1 = 0.I;
end;
definition
let I be non degenerated domRing-like commutative Ring;
func q1.I -> Element of Quot.I means
:: QUOFIELD:def 9
for z being Element of Q.I holds z in it iff z`1 = z`2;
end;
definition
let I be non degenerated domRing-like commutative Ring;
let u be Element of Quot.I;
func qaddinv(u) -> Element of Quot.I means
:: QUOFIELD:def 10
for z being Element of Q.
I holds z in it iff ex a being Element of Q.I st a in u & z`1 * a`2 = z`2 * (-(
a`1));
end;
definition
let I be non degenerated domRing-like commutative Ring;
let u be Element of Quot.I;
assume
u <> q0.I;
func qmultinv(u) -> Element of Quot.I means
:: QUOFIELD:def 11
for z being Element of
Q.I holds z in it iff ex a being Element of Q.I st a in u & z`1 * a`1 = z`2 * a
`2;
end;
theorem :: QUOFIELD:11
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds qadd(u,qadd(v,w)) = qadd(qadd(u,v),w) & qadd(
u,v) = qadd(v,u);
theorem :: QUOFIELD:12
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds qadd(u,q0.I) = u & qadd(q0.I,u) = u;
theorem :: QUOFIELD:13
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds qmult(u,qmult(v,w)) = qmult(qmult(u,v),w) &
qmult(u,v) = qmult(v,u);
theorem :: QUOFIELD:14
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds qmult(u,q1.I) = u & qmult(q1.I,u) = u;
theorem :: QUOFIELD:15
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds qmult(qadd(u,v),w) = qadd(qmult(u,w),qmult(v,
w));
theorem :: QUOFIELD:16
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds qmult(u,qadd(v,w)) = qadd(qmult(u,v),qmult(u,
w));
theorem :: QUOFIELD:17
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds qadd(u,qaddinv(u)) = q0.I & qadd(qaddinv(u),u) =
q0.I;
theorem :: QUOFIELD:18
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I st u <> q0.I holds qmult(u,qmultinv(u)) = q1.I & qmult(
qmultinv(u),u) = q1.I;
theorem :: QUOFIELD:19
for I being non degenerated domRing-like commutative Ring holds q1.I <> q0.I;
:: Redefinition of the Operations' Types
definition
let I be non degenerated domRing-like commutative Ring;
func quotadd(I) -> BinOp of Quot.I means
:: QUOFIELD:def 12
for u,v being Element of Quot.I holds it.(u,v) = qadd(u,v);
end;
definition
let I be non degenerated domRing-like commutative Ring;
func quotmult(I) -> BinOp of Quot.I means
:: QUOFIELD:def 13
for u,v being Element of Quot.I holds it.(u,v) = qmult(u,v);
end;
definition
let I be non degenerated domRing-like commutative Ring;
func quotaddinv(I) -> UnOp of Quot.I means
:: QUOFIELD:def 14
for u being Element of Quot.I holds it.(u) = qaddinv(u);
end;
definition
let I be non degenerated domRing-like commutative Ring;
func quotmultinv(I) -> UnOp of Quot.I means
:: QUOFIELD:def 15
for u being Element of Quot.I holds it.(u) = qmultinv(u);
end;
theorem :: QUOFIELD:20
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds (quotadd(I)).((quotadd(I)).(u,v),w) = (
quotadd(I)).(u,(quotadd(I)).(v,w));
theorem :: QUOFIELD:21
for I being non degenerated domRing-like commutative Ring for u,
v being Element of Quot.I holds (quotadd(I)).(u,v) = (quotadd(I)).(v,u);
theorem :: QUOFIELD:22
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds (quotadd(I)).(u,q0.I) = u & (quotadd(I)).(q0.I,u)
= u;
theorem :: QUOFIELD:23
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds (quotmult(I)).((quotmult(I)).(u,v),w) = (
quotmult(I)).(u,(quotmult(I)).(v,w));
theorem :: QUOFIELD:24
for I being non degenerated domRing-like commutative Ring for u,
v being Element of Quot.I holds (quotmult(I)).(u,v)=(quotmult(I)).(v,u);
theorem :: QUOFIELD:25
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds (quotmult(I)).(u,q1.I) = u & (quotmult(I)).(q1.I,
u) = u;
theorem :: QUOFIELD:26
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds (quotmult(I)).((quotadd(I)).(u,v),w) = (
quotadd(I)).((quotmult(I)).(u,w),(quotmult(I)).(v,w));
theorem :: QUOFIELD:27
for I being non degenerated domRing-like commutative Ring for u,
v,w being Element of Quot.I holds (quotmult(I)).(u,(quotadd(I)).(v,w)) = (
quotadd(I)).((quotmult(I)).(u,v),(quotmult(I)).(u,w));
theorem :: QUOFIELD:28
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I holds (quotadd(I)).(u,(quotaddinv(I)).(u)) = q0.I & (
quotadd(I)).((quotaddinv(I)).(u),u) = q0.I;
theorem :: QUOFIELD:29
for I being non degenerated domRing-like commutative Ring for u
being Element of Quot.I st u <> q0.I holds (quotmult(I)).(u,(quotmultinv(I)).(u
)) = q1.I & (quotmult(I)).((quotmultinv(I)).(u),u) = q1.I;
begin :: Definition of Quotient Field
definition
let I be non degenerated domRing-like commutative Ring;
func the_Field_of_Quotients(I) -> strict doubleLoopStr equals
:: QUOFIELD:def 16
doubleLoopStr
(# Quot.I,quotadd(I),quotmult(I),q1.I,q0.I #);
end;
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> non empty;
end;
theorem :: QUOFIELD:30
for I being non degenerated domRing-like commutative Ring holds the
carrier of the_Field_of_Quotients(I) = Quot.I & the addF of
the_Field_of_Quotients(I) = quotadd(I) & the multF of the_Field_of_Quotients(I)
= quotmult(I) & 0.the_Field_of_Quotients(I) = q0.I & 1.the_Field_of_Quotients(I
) = q1.I;
theorem :: QUOFIELD:31
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds (quotadd(I)).(u,v) is Element
of the_Field_of_Quotients(I);
theorem :: QUOFIELD:32
for I being non degenerated domRing-like commutative Ring for u
being Element of the_Field_of_Quotients(I) holds (quotaddinv(I)).(u) is Element
of the_Field_of_Quotients(I);
theorem :: QUOFIELD:33
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds (quotmult(I)).(u,v) is Element
of the_Field_of_Quotients(I);
theorem :: QUOFIELD:34
for I being non degenerated domRing-like commutative Ring for u being
Element of the_Field_of_Quotients(I) holds (quotmultinv(I)).(u) is Element of
the_Field_of_Quotients(I);
theorem :: QUOFIELD:35
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds u + v = (quotadd(I)).(u,v);
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> add-associative right_zeroed
right_complementable;
end;
theorem :: QUOFIELD:36
for I being non degenerated domRing-like commutative Ring for u being
Element of the_Field_of_Quotients(I) holds -u = (quotaddinv(I)).(u);
theorem :: QUOFIELD:37
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds u * v = (quotmult(I)).(u,v);
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> commutative;
end;
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> well-unital;
end;
theorem :: QUOFIELD:38
for I being non degenerated domRing-like commutative Ring holds 1.
the_Field_of_Quotients(I) = q1.I & 0.the_Field_of_Quotients(I) = q0.I;
theorem :: QUOFIELD:39
for I being non degenerated domRing-like commutative Ring for u,v,w
being Element of the_Field_of_Quotients(I) holds (u + v) + w = u + (v + w);
theorem :: QUOFIELD:40
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds u + v = v + u;
theorem :: QUOFIELD:41
for I being non degenerated domRing-like commutative Ring for u being
Element of the_Field_of_Quotients(I) holds u + 0.the_Field_of_Quotients(I) = u;
theorem :: QUOFIELD:42
for I being non degenerated domRing-like commutative Ring for u being
Element of the_Field_of_Quotients(I) holds 1.the_Field_of_Quotients(I) * u = u;
theorem :: QUOFIELD:43
for I being non degenerated domRing-like commutative Ring for u,v
being Element of the_Field_of_Quotients(I) holds u * v = v * u;
theorem :: QUOFIELD:44
for I being non degenerated domRing-like commutative Ring for u,v,w
being Element of the_Field_of_Quotients(I) holds (u * v) * w = u * (v * w);
theorem :: QUOFIELD:45
for I being non degenerated domRing-like commutative Ring for u
being Element of the_Field_of_Quotients(I) st u <> 0.the_Field_of_Quotients(I)
ex v being Element of the_Field_of_Quotients(I) st u * v = 1.
the_Field_of_Quotients(I);
theorem :: QUOFIELD:46
for I being non degenerated domRing-like commutative Ring holds
the_Field_of_Quotients(I) is add-associative right_zeroed right_complementable
Abelian associative unital distributive almost_left_invertible non degenerated
non empty doubleLoopStr;
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> Abelian associative distributive
almost_left_invertible non degenerated;
end;
theorem :: QUOFIELD:47
for I being non degenerated domRing-like commutative Ring for x
being Element of the_Field_of_Quotients(I) st x <> 0.the_Field_of_Quotients(I)
for a being Element of I st a <> 0.I for u being Element of Q.I st x = QClass.u
& u = [a,1.I] for v being Element of Q.I st v = [1.I,a] holds x" = QClass.v;
:: Field is Integral Domain
registration
cluster -> domRing-like right_unital for add-associative right_zeroed
right_complementable commutative associative well-unital distributive
almost_left_invertible non empty doubleLoopStr;
end;
registration
cluster add-associative right_zeroed right_complementable Abelian
commutative associative left_unital distributive almost_left_invertible non
degenerated for non empty doubleLoopStr;
end;
definition
let F be commutative associative well-unital distributive
almost_left_invertible non empty doubleLoopStr;
let x, y be Element of F;
func x/y -> Element of F equals
:: QUOFIELD:def 17
x * y";
end;
theorem :: QUOFIELD:48
for F being non degenerated almost_left_invertible commutative
Ring for a,b,c,d being Element of F st b <> 0.F & d <> 0.F holds (a/b) * (c/d)
= (a * c) / (b * d);
theorem :: QUOFIELD:49
for F being non degenerated almost_left_invertible commutative
Ring for a,b,c,d being Element of F st b <> 0.F & d <> 0.F holds (a/b) + (c/d)
= (a*d + c*b) / (b * d);
begin :: Definition of Ring Homomorphism
notation
let R,S be non empty doubleLoopStr;
let f be Function of R, S;
synonym f is RingHomomorphism for f is linear;
synonym f is RingEpimorphism for f is epimorphism;
synonym f is RingMonomorphism for f is monomorphism;
end;
notation
let R,S be non empty doubleLoopStr;
let f be Function of R, S;
synonym f is embedding for f is RingMonomorphism;
synonym f is RingIsomorphism for f is isomorphism;
end;
theorem :: QUOFIELD:50
for R,S being Ring for f being Function of R, S st
f is RingHomomorphism holds f.(0.R) = 0.S;
theorem :: QUOFIELD:51
for R,S being Ring for f being Function of R, S st f is
RingMonomorphism for x being Element of R holds f.x = 0.S iff x = 0.R;
theorem :: QUOFIELD:52
for R,S being non degenerated almost_left_invertible commutative
Ring for f being Function of R, S st f is RingHomomorphism for x being Element
of R st x <> 0.R holds f.(x") = (f.x)";
theorem :: QUOFIELD:53
for R,S being non degenerated almost_left_invertible commutative
Ring for f being Function of R, S st f is RingHomomorphism for x,y being
Element of R st y <> 0.R holds f.(x * y") = f.x * (f.y)";
theorem :: QUOFIELD:54
for R,S,T being Ring for f being Function of R, S st f is
RingHomomorphism for g being Function of S, T st g is RingHomomorphism holds g*
f is RingHomomorphism;
theorem :: QUOFIELD:55
for R being non empty doubleLoopStr holds id R is RingHomomorphism;
registration
let R be non empty doubleLoopStr;
cluster id R -> RingHomomorphism;
end;
definition
::$CD 4
let R,S be non empty doubleLoopStr;
pred R is_embedded_in S means
:: QUOFIELD:def 22
ex f being Function of R, S st f is RingMonomorphism;
end;
definition
let R,S be non empty doubleLoopStr;
pred R is_ringisomorph_to S means
:: QUOFIELD:def 23
ex f being Function of R, S st f is RingIsomorphism;
symmetry;
end;
begin :: Properties of the Field of Quotients
definition
let I be non empty ZeroStr;
let x, y be Element of I;
assume
y <> 0.I;
func quotient(x,y) -> Element of Q.I equals
:: QUOFIELD:def 24
[x,y];
end;
definition
let I be non degenerated domRing-like commutative Ring;
func canHom(I) -> Function of I, the_Field_of_Quotients(I) means
:: QUOFIELD:def 25
for x being Element of I holds it.x = QClass.(quotient(x,1.I));
end;
theorem :: QUOFIELD:56
for I being non degenerated domRing-like commutative Ring holds
canHom(I) is RingHomomorphism;
theorem :: QUOFIELD:57
for I being non degenerated domRing-like commutative Ring holds
canHom(I) is embedding;
theorem :: QUOFIELD:58
for I being non degenerated domRing-like commutative Ring holds I
is_embedded_in the_Field_of_Quotients(I);
theorem :: QUOFIELD:59
for F being non degenerated almost_left_invertible domRing-like
commutative Ring holds F is_ringisomorph_to the_Field_of_Quotients(F);
registration
let I be non degenerated domRing-like commutative Ring;
cluster the_Field_of_Quotients(I) -> domRing-like right_unital
right-distributive;
end;
theorem :: QUOFIELD:60
for I being non degenerated domRing-like commutative Ring holds
the_Field_of_Quotients(the_Field_of_Quotients(I)) is_ringisomorph_to
the_Field_of_Quotients(I);
:: Universal Property of Fields of Quotients
definition
let I, F be non empty doubleLoopStr;
let f be Function of I, F;
pred I has_Field_of_Quotients_Pair F,f means
:: QUOFIELD:def 26
f is RingMonomorphism &
for F9 being add-associative right_zeroed right_complementable Abelian
commutative associative well-unital distributive almost_left_invertible non
degenerated non empty doubleLoopStr for f9 being Function of I, F9 st f9 is
RingMonomorphism holds ex h being Function of F, F9 st h is RingHomomorphism &
h*f = f9 & for h9 being Function of F, F9 st h9 is RingHomomorphism & h9*f = f9
holds h9 = h;
end;
theorem :: QUOFIELD:61
for I being non degenerated domRing-like commutative Ring holds ex F
being add-associative right_zeroed right_complementable Abelian commutative
associative well-unital distributive almost_left_invertible non degenerated
non empty doubleLoopStr st ex f being Function of I, F st I
has_Field_of_Quotients_Pair F,f;
theorem :: QUOFIELD:62
for I being domRing-like commutative Ring for F,F9 being
add-associative right_zeroed right_complementable Abelian commutative
associative well-unital distributive almost_left_invertible non degenerated
non empty doubleLoopStr for f being Function of I, F for f9 being Function of
I, F9 st I has_Field_of_Quotients_Pair F,f & I has_Field_of_Quotients_Pair F9,
f9 holds F is_ringisomorph_to F9;