:: Chebyshev Distance
:: by Roland Coghetto
::
:: Received December 31, 2015
:: Copyright (c) 2015-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 RLVECT_1, RVSUM_1, ALGSTR_0, METRIC_1, SQUARE_1, VALUED_0,
PRE_TOPC, EQREL_1, PROB_1, MEASURE5, SUPINF_1, XREAL_0, MCART_1,
XBOOLE_0, ORDINAL1, FINSEQ_2, EUCLID_9, ARYTM_3, XCMPLX_0, EUCLID,
RCOMP_1, PCOMPS_1, SUBSET_1, TARSKI, NAT_1, NUMBERS, CARD_1, CARD_3,
TOPS_1, REAL_1, TOPMETR, RELAT_1, FUNCT_1, FINSEQ_1, XXREAL_0, ARYTM_1,
XXREAL_1, QC_LANG1, FUNCT_2, FINSET_1, CANTOR_1, RLVECT_3, SETFAM_1,
ZFMISC_1, STRUCT_0, FUNCOP_1, SRINGS_3, SRINGS_4, SRINGS_1, FINSUB_1,
SIMPLEX0, PARTFUN1, COMPLEX1, TIETZE_2, ORDINAL2, XXREAL_2, FUNCT_7,
MEMBERED, RLTOPSP1, FUNCSDOM, SRINGS_5;
notations SQUARE_1, ALGSTR_0, RLVECT_1, XXREAL_3, EXTREAL1, VALUED_1, RVSUM_1,
EQREL_1, MEASURE5, SUPINF_1, ZFMISC_1, FINSUB_1, SIMPLEX0, SUBSET_1,
NUMBERS, XXREAL_0, SETFAM_1, XREAL_0, RCOMP_1, TARSKI, ORDINAL1,
XCMPLX_0, PCOMPS_1, EUCLID_9, PRE_TOPC, FINSEQ_2, CARD_1, XBOOLE_0,
CARD_3, TOPS_1, TOPMETR, FUNCT_1, FINSEQ_1, TOPS_2, CANTOR_1, RELAT_1,
FINSET_1, FUNCT_2, FUNCOP_1, RELSET_1, NAT_1, STRUCT_0, TIETZE_2,
SRINGS_1, SRINGS_3, SRINGS_4, PARTFUN1, XTUPLE_0, PROB_1, COMPLEX1,
VALUED_0, XXREAL_2, MEMBERED, BINOP_1, METRIC_1, EUCLID, RLTOPSP1,
FUNCSDOM;
constructors SQUARE_1, SUPINF_2, EXTREAL1, EUCLID_9, TOPS_1, FUNCSDOM,
MONOID_0, TOPGEN_2, TIETZE_2, SRINGS_1, SRINGS_3, SRINGS_4, TOPGEN_3,
COMPLEX1, INTEGRA1, WAYBEL23;
registrations METRIC_1, XXREAL_1, FINSEQ_1, SUBSET_1, XREAL_0, NAT_1,
ORDINAL1, NUMBERS, FINSEQ_2, TOPGEN_4, CARD_1, EUCLID_9, TOPS_1,
XXREAL_0, EUCLID, VALUED_0, MONOID_0, RCOMP_1, CARD_3, FINSET_1,
RELSET_1, SRINGS_1, SRINGS_3, SRINGS_4, XCMPLX_0, XTUPLE_0, FUNCT_1,
FUNCT_2, SETFAM_1, MEMBERED, STRUCT_0, XXREAL_2, SQUARE_1, RLTOPSP1,
XBOOLE_0, MFOLD_0;
requirements SUBSET, NUMERALS, BOOLE, ARITHM, REAL;
begin :: Preliminaries
reserve n for Nat,
r,s for Real,
x,y for Element of REAL n,
p,q for Point of TOP-REAL n,
e for Point of Euclid n;
theorem :: SRINGS_5:1
abs (x-y) = abs (y-x);
theorem :: SRINGS_5:2
for i being Nat st i in Seg n holds abs x.i in REAL;
theorem :: SRINGS_5:3
for x,y being Element of REAL,xe,ye being ExtReal st x <= xe & y <= ye holds
x + y <= xe + ye;
theorem :: SRINGS_5:4
for a,c being Real, b being R_eal st a < b & [.a,b.[ c= [.a,c.[ holds
b is Real;
theorem :: SRINGS_5:5
for D being non empty set, D1 being non empty Subset of D holds
n-tuples_on D1 c= n-tuples_on D;
theorem :: SRINGS_5:6
for X being non empty set,f being Function st f = Seg n --> X holds
f is non-empty n-element FinSequence;
definition
let n be Nat;
func ProductREAL(n) -> non-empty n-element FinSequence equals
:: SRINGS_5:def 1
Seg n --> REAL;
end;
theorem :: SRINGS_5:7
ProductREAL(n) = Seg n --> the carrier of R^1;
theorem :: SRINGS_5:8
product (Seg n --> REAL) = REAL n;
theorem :: SRINGS_5:9
product ProductREAL(n) = REAL n;
theorem :: SRINGS_5:10
for X being set holds product(Seg n --> X) = n-tuples_on X;
theorem :: SRINGS_5:11
for D being non empty set, x being Tuple of n, D holds x in Funcs(Seg n,D);
theorem :: SRINGS_5:12
for O1 being Subset of TOP-REAL n, O2 being Subset of TopSpaceMetr Euclid n
st O1 = O2 holds O1 is open iff O2 is open;
theorem :: SRINGS_5:13
e = p implies
the set of all OpenHypercube(e,1/m) where m is non zero Element of NAT =
the set of all OpenHypercube(p,1/m) where m is non zero Element of NAT;
theorem :: SRINGS_5:14
q in OpenHypercube(p,r) implies p in OpenHypercube(q,r);
theorem :: SRINGS_5:15
q in OpenHypercube(p,r/2) implies OpenHypercube(q,r/2) c= OpenHypercube(p,r);
definition
let x be Element of [:REAL,REAL:];
redefine func x`1 -> Element of REAL;
redefine func x`2 -> Element of REAL;
end;
definition
let n be Nat, x be Element of [:REAL n,REAL n:];
redefine func x`1 -> Element of REAL n;
redefine func x`2 -> Element of REAL n;
end;
theorem :: SRINGS_5:16
for f being n-element FinSequence of [:REAL,REAL:] holds
ex x being Element of [:REAL n,REAL n:] st for i being Nat st
i in Seg n holds (x`1).i = (f/.i)`1 & (x`2).i = (f/.i)`2;
begin :: The set of n-tuples of rational numbers
definition
let n;
func RAT n -> FinSequenceSet of RAT equals
:: SRINGS_5:def 2
n-tuples_on RAT;
end;
theorem :: SRINGS_5:17
RAT 0 = {0};
registration
cluster RAT 0 -> trivial;
end;
registration
let n;
cluster RAT n -> non empty;
end;
registration
let n;
cluster -> n-element for Element of RAT n;
end;
registration
let n;
cluster RAT n -> countable;
end;
registration
let n be positive Nat;
cluster RAT n -> infinite;
end;
registration
let n be positive Nat;
cluster RAT n -> denumerable;
end;
theorem :: SRINGS_5:18
RAT n is dense Subset of TOP-REAL n;
registration
let n;
cluster RAT n -> countable dense for Subset of TOP-REAL n;
end;
begin :: A countable base of an n-dimensional Euclidean space (Version 1: MFOLD_1)
registration
let n be Nat;
cluster countable for Basis of TOP-REAL n;
end;
begin :: A countable base of an n-dimensional Euclidean space (Version 2)
registration
let n,e;
cluster OpenHypercubes(e) -> countable;
end;
definition
let n;
func OpenHypercubesRAT(n) -> non empty set equals
:: SRINGS_5:def 3
{OpenHypercubes(q) where q is Point of Euclid n : q in RAT n};
end;
definition
let n;
let q be Element of RAT n;
func @q -> Point of Euclid n equals
:: SRINGS_5:def 4
q;
end;
definition
let n;
let q be object such that
q in RAT n;
func object2RAT(q,n) -> Element of RAT n equals
:: SRINGS_5:def 5
q;
end;
registration let n;
cluster OpenHypercubesRAT(n) -> countable;
end;
registration let n;
cluster union OpenHypercubesRAT(n) -> countable;
end;
theorem :: SRINGS_5:19
union OpenHypercubesRAT(n) is open Subset-Family of TOP-REAL n;
theorem :: SRINGS_5:20
for O being non empty open Subset of TOP-REAL n holds
ex p being Element of RAT n st p in O;
theorem :: SRINGS_5:21
for cB being Subset-Family of TOP-REAL n st
cB = union OpenHypercubesRAT(n) holds cB is quasi_basis;
registration let n;
cluster union OpenHypercubesRAT(n) -> non empty;
end;
definition
let n;
func dense_countable_OpenHypercubes(n) -> countable open
Subset-Family of TOP-REAL n equals
:: SRINGS_5:def 6
union OpenHypercubesRAT(n);
end;
theorem :: SRINGS_5:22
dense_countable_OpenHypercubes(n) =
{OpenHypercube(q,1/m) where q is Point of Euclid n,
m is positive Nat:q in RAT n};
registration :: Second version
let n be Nat;
cluster countable for Basis of TOP-REAL n;
end;
theorem :: SRINGS_5:23
dense_countable_OpenHypercubes(n) is countable Basis of TOP-REAL n;
theorem :: SRINGS_5:24
for O being open Subset of TOP-REAL n holds
ex Y being Subset of dense_countable_OpenHypercubes(n) st Y is countable &
O = union Y;
theorem :: SRINGS_5:25
for O being open non empty Subset of TOP-REAL n holds
ex Y being Subset of dense_countable_OpenHypercubes(n) st Y is non empty &
O = union Y &
ex g being Function of NAT,Y st
for x being object holds x in O iff ex y being object st y in NAT & x in g.y;
theorem :: SRINGS_5:26
for O being open non empty Subset of TOP-REAL n holds
ex s being sequence of dense_countable_OpenHypercubes(n) st
for x being object holds x in O iff
ex y being object st y in NAT & x in s.y;
theorem :: SRINGS_5:27
for O being open non empty Subset of TOP-REAL n holds
ex s being sequence of dense_countable_OpenHypercubes(n) st O = Union s;
begin :: The set of all left open real bounded intervals
definition
func the_set_of_all_left_open_real_bounded_intervals
-> Subset-Family of REAL equals
:: SRINGS_5:def 7
the set of all ].a,b.] where a,b is Real;
end;
registration
cluster the_set_of_all_left_open_real_bounded_intervals -> non empty;
end;
theorem :: SRINGS_5:28
the_set_of_all_left_open_real_bounded_intervals c=
{ I where I is Subset of REAL: I is left_open_interval};
theorem :: SRINGS_5:29
the_set_of_all_left_open_real_bounded_intervals is
cap-closed diff-finite-partition-closed with_empty_element
with_countable_Cover;
theorem :: SRINGS_5:30
the_set_of_all_left_open_real_bounded_intervals is Semiring of REAL;
begin :: The set of all right open real bounded intervals
definition
func the_set_of_all_right_open_real_bounded_intervals
-> Subset-Family of REAL equals
:: SRINGS_5:def 8
the set of all [.a,b.[ where a,b is Real;
end;
registration
cluster the_set_of_all_right_open_real_bounded_intervals ->
non empty;
end;
theorem :: SRINGS_5:31
the_set_of_all_right_open_real_bounded_intervals c=
{ I where I is Subset of REAL: I is right_open_interval};
registration
cluster the_set_of_all_right_open_real_bounded_intervals -> cap-closed
diff-finite-partition-closed with_empty_element with_countable_Cover;
end;
theorem :: SRINGS_5:32
the_set_of_all_right_open_real_bounded_intervals is Semiring of REAL;
begin :: Finite Product of Left_Open_Intervals
reserve n for non zero Nat;
definition
let n be non zero Nat;
func ProductLeftOpenIntervals(n) -> ClassicalSemiringFamily of
ProductREAL(n) equals
:: SRINGS_5:def 9
Seg n --> the_set_of_all_left_open_real_bounded_intervals;
end;
theorem :: SRINGS_5:33
ProductLeftOpenIntervals(n) = Seg n --> the set of all ].a,b.] where
a,b is Real;
theorem :: SRINGS_5:34
MeasurableRectangle(ProductLeftOpenIntervals(n)) is Semiring of REAL n;
theorem :: SRINGS_5:35
for x being object st x in MeasurableRectangle(ProductLeftOpenIntervals(n))
holds ex y being Subset of REAL n st
x = y &
for i being Nat st i in Seg n holds
ex a,b being Real st
for t being Element of REAL n st t in y holds t.i in ].a,b.];
theorem :: SRINGS_5:36
for x being object st x in MeasurableRectangle(ProductLeftOpenIntervals(n))
holds ex y being Subset of REAL n,
f being n-element FinSequence of [:REAL,REAL:]
st x = y &
(for t being Element of REAL n holds t in y
iff
for i being Nat st i in Seg n holds t.i in ].(f/.i)`1,(f/.i)`2.]);
theorem :: SRINGS_5:37
for x being object st x in MeasurableRectangle(ProductLeftOpenIntervals(n))
holds ex y being Subset of REAL n, a, b being Element of REAL n st
x = y &
for s being object holds
s in y
iff
(ex t being Element of REAL n st s = t & for i being Nat st
i in Seg n holds t.i in ]. a.i, b.i .]);
theorem :: SRINGS_5:38
for x being set st x in MeasurableRectangle(ProductLeftOpenIntervals(n))
holds ex a, b being Element of REAL n st
for t being Element of REAL n holds
t in x
iff
(for i being Nat st i in Seg n holds t.i in ]. a.i, b.i .]);
begin :: Finite Product of Right_Open_Intervals
definition
let n be non zero Nat;
func ProductRightOpenIntervals(n) -> ClassicalSemiringFamily of
ProductREAL(n) equals
:: SRINGS_5:def 10
Seg n --> the_set_of_all_right_open_real_bounded_intervals;
end;
reserve n for non zero Nat;
theorem :: SRINGS_5:39
ProductRightOpenIntervals(n) = Seg n --> the set of all [.a,b.[ where
a,b is Real;
theorem :: SRINGS_5:40
MeasurableRectangle(ProductRightOpenIntervals(n)) is Semiring of REAL n;
theorem :: SRINGS_5:41
for x being object st x in MeasurableRectangle(ProductRightOpenIntervals(n))
holds ex y being Subset of REAL n st
x = y &
for i being Nat st i in Seg n holds
ex a,b being Real st
for t being Element of REAL n st t in y holds t.i in [.a,b.[;
theorem :: SRINGS_5:42
for x being object st x in MeasurableRectangle(ProductRightOpenIntervals(n))
holds ex y being Subset of REAL n,
f being n-element FinSequence of [:REAL,REAL:]
st x = y &
(for t being Element of REAL n holds t in y
iff
for i being Nat st i in Seg n holds t.i in [.(f/.i)`1,(f/.i)`2.[);
theorem :: SRINGS_5:43
for x being object st x in MeasurableRectangle(ProductRightOpenIntervals(n))
holds ex y being Subset of REAL n, a, b being Element of REAL n st
x = y &
for s being object holds
s in y
iff
(ex t being Element of REAL n st s = t & for i being Nat st
i in Seg n holds t.i in [. a.i, b.i .[);
theorem :: SRINGS_5:44
for x being set st x in MeasurableRectangle(ProductRightOpenIntervals(n))
holds ex a, b being Element of REAL n st
for t being Element of REAL n holds
t in x
iff
(for i being Nat st i in Seg n holds t.i in [. a.i, b.i .[);
begin :: n-dimensional product of Subset-Family
reserve n for Nat,
X for set,
S for Subset-Family of X;
definition let n,X;
func Product(n,X) -> set means
:: SRINGS_5:def 11
for f being object holds f in it iff
ex g being Function st f = product g & g in product (Seg n --> X);
end;
theorem :: SRINGS_5:45
Product(n,X) c= bool Funcs(dom (Seg n --> X), union Union (Seg n --> X));
theorem :: SRINGS_5:46
Product(n,S) is Subset-Family of product (Seg n --> X);
theorem :: SRINGS_5:47
for S being non empty Subset-Family of X holds
Product(n,S) = the set of all product f where f is Tuple of n,S;
theorem :: SRINGS_5:48
for n being non zero Nat holds
Product(n,X) c= bool Funcs(Seg n, union X);
theorem :: SRINGS_5:49
for n being non zero Nat, X being non empty set,
S being non empty Subset-Family of X st S <> {{}} holds
Product(n,S) c= bool Funcs(Seg n,X);
theorem :: SRINGS_5:50
for n being non zero Nat,X being non empty set,
S being non empty Subset-Family of X st S <> {{}} holds
union Product(n,S) c= Funcs(Seg n,X);
registration
let n be Nat, X be non empty set;
cluster Product(n,X) -> non empty;
end;
theorem :: SRINGS_5:51
for X being non empty set,
S being non empty Subset-Family of X,
x being Subset of Funcs(Seg n,X)
holds
x is Element of Product(n,S)
iff
(ex s being Tuple of n,S st for t being Element of Funcs(Seg n,X) holds
(for i being Nat st i in Seg n holds t.i in s.i) iff t in x);
begin :: the set of all closed real bounded intervals
definition
func the_set_of_all_closed_real_bounded_intervals ->
Subset-Family of REAL equals
:: SRINGS_5:def 12
the set of all [.a,b.] where a,b is Real;
end;
theorem :: SRINGS_5:52
the_set_of_all_closed_real_bounded_intervals =
{I where I is Subset of REAL : I is closed_interval};
registration
cluster the_set_of_all_closed_real_bounded_intervals -> non empty;
end;
registration
cluster the_set_of_all_closed_real_bounded_intervals ->
cap-closed with_empty_element with_countable_Cover;
end;
theorem :: SRINGS_5:53
for n being Nat holds Seg n -->
the_set_of_all_closed_real_bounded_intervals is n-element FinSequence;
begin :: The set of all open real bounded intervals
definition
func the_set_of_all_open_real_bounded_intervals ->
Subset-Family of REAL equals
:: SRINGS_5:def 13
the set of all ].a,b.[ where a,b is Real;
end;
theorem :: SRINGS_5:54
the_set_of_all_open_real_bounded_intervals c=
{I where I is Subset of REAL : I is open_interval};
registration
cluster the_set_of_all_open_real_bounded_intervals -> non empty;
end;
registration
cluster the_set_of_all_open_real_bounded_intervals -> cap-closed
with_empty_element with_countable_Cover;
end;
theorem :: SRINGS_5:55
for n being Nat holds Seg n --> the_set_of_all_open_real_bounded_intervals is
n-element FinSequence;
begin :: n-dimensional Subset-Family of REAL
reserve n for Nat,
S for Subset-Family of REAL;
theorem :: SRINGS_5:56
Product(n,S) is Subset-Family of REAL n;
definition
let n,S;
redefine func Product(n,S) -> Subset-Family of REAL n;
end;
theorem :: SRINGS_5:57
for S being non empty Subset-Family of REAL, x being Subset of REAL n holds
x is Element of Product(n,S)
iff
ex s being Tuple of n,S st
for t being Element of REAL n holds
(for i being Nat st i in Seg n holds t.i in s.i) iff t in x;
theorem :: SRINGS_5:58
for n being non zero Nat,
s being Tuple of n,the_set_of_all_closed_real_bounded_intervals holds
ex a,b being Element of REAL n st
for i being Nat st i in Seg n holds s.i = [.a.i,b.i.];
theorem :: SRINGS_5:59
for n being non zero Nat,
x being Element of Product(n,the_set_of_all_closed_real_bounded_intervals)
holds (ex a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff (for i being Nat st i in Seg n holds t.i in [. a.i, b.i .])));
theorem :: SRINGS_5:60
for n being non zero Nat, x being Subset of REAL n,
a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff
(for i being Nat st i in Seg n holds t.i in [. a.i, b.i .]))
holds
x is Element of Product(n,the_set_of_all_closed_real_bounded_intervals);
theorem :: SRINGS_5:61
for n being non zero Nat, x being Subset of REAL n,
a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff
(for i being Nat st i in Seg n holds t.i in ]. a.i, b.i .]))
holds
x is Element of Product(n,the_set_of_all_left_open_real_bounded_intervals);
theorem :: SRINGS_5:62
for n being non zero Nat, x being Subset of REAL n,
a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff
(for i being Nat st i in Seg n holds t.i in [. a.i, b.i .[))
holds
x is Element of Product(n,the_set_of_all_right_open_real_bounded_intervals);
theorem :: SRINGS_5:63
for n being non zero Nat,
s being Tuple of n,the_set_of_all_left_open_real_bounded_intervals holds
ex a,b being Element of REAL n st
for i being Nat st i in Seg n holds s.i = ].a.i,b.i.];
theorem :: SRINGS_5:64
for n being non zero Nat,
x being Element of
Product(n,the_set_of_all_left_open_real_bounded_intervals)
holds (ex a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff (for i being Nat st i in Seg n holds t.i in ]. a.i, b.i .])));
theorem :: SRINGS_5:65
for n being non zero Nat,
s being Tuple of n,the_set_of_all_right_open_real_bounded_intervals holds
ex a,b being Element of REAL n st
for i being Nat st i in Seg n holds s.i = [.a.i,b.i.[;
theorem :: SRINGS_5:66
for n being non zero Nat,
x being Element of
Product(n,the_set_of_all_right_open_real_bounded_intervals)
holds (ex a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff (for i being Nat st i in Seg n holds t.i in [. a.i, b.i .[)));
begin :: Closed/Open/LeftOpen/RightOpen - HyperInterval
reserve n for Nat,
a,b,c,d for Element of REAL n;
definition
let n,a,b;
func ClosedHyperInterval(a,b) -> Subset of REAL n means
:: SRINGS_5:def 14
for x being object holds x in it iff ex y being Element of REAL n st
x = y & (for i being Nat st i in Seg n holds y.i in [.a.i,b.i.]);
end;
definition
let n,a,b;
func OpenHyperInterval(a,b) -> Subset of REAL n means
:: SRINGS_5:def 15
for x being object holds x in it iff ex y being Element of REAL n st
x = y & (for i being Nat st i in Seg n holds y.i in ].a.i,b.i.[);
end;
definition
let n,a,b;
func LeftOpenHyperInterval(a,b) -> Subset of REAL n means
:: SRINGS_5:def 16
for x being object holds x in it iff ex y being Element of REAL n st
x = y & (for i being Nat st i in Seg n holds y.i in ].a.i,b.i.]);
end;
definition
let n,a,b;
func RightOpenHyperInterval(a,b) -> Subset of REAL n means
:: SRINGS_5:def 17
for x being object holds x in it iff ex y being Element of REAL n st
x = y & (for i being Nat st i in Seg n holds y.i in [.a.i,b.i.[);
end;
theorem :: SRINGS_5:67
ClosedHyperInterval(a,a) = {a};
registration
let n,a;
cluster ClosedHyperInterval(a,a) -> trivial;
end;
theorem :: SRINGS_5:68
OpenHyperInterval(a,b) c= LeftOpenHyperInterval(a,b) &
OpenHyperInterval(a,b) c= RightOpenHyperInterval(a,b) &
LeftOpenHyperInterval(a,b) c= ClosedHyperInterval(a,b) &
RightOpenHyperInterval(a,b) c= ClosedHyperInterval(a,b);
definition
let n,a,b;
pred a <= b means
:: SRINGS_5:def 18
for i being Nat st i in Seg n holds a.i <= b.i;
reflexivity;
end;
theorem :: SRINGS_5:69
a <= b & b <= c implies a <= c;
theorem :: SRINGS_5:70
a <= c & d <= b implies ClosedHyperInterval(c,d) c= ClosedHyperInterval(a,b);
theorem :: SRINGS_5:71
a <= b implies ClosedHyperInterval(a,b) is non empty;
definition
let n,a,b;
pred a < b means
:: SRINGS_5:def 19
for i being Nat st i in Seg n holds a.i < b.i;
end;
theorem :: SRINGS_5:72
a < b & b < c implies a < c;
theorem :: SRINGS_5:73
b < a & n is non zero implies ClosedHyperInterval(a,b) is empty;
theorem :: SRINGS_5:74
n|-> r is Element of REAL n;
definition
let n,r;
redefine func n |-> r -> Element of REAL n;
end;
definition
let r;
redefine func <*r*> -> Element of REAL 1;
end;
theorem :: SRINGS_5:75
for n being non zero Nat,e being Point of Euclid n
holds ex a being Element of REAL n st a = e &
OpenHypercube(e,r) = OpenHyperInterval(a - (n|-> r),a + (n|-> r));
theorem :: SRINGS_5:76
for p being Point of TOP-REAL n ex a being Element of REAL n st a = p &
ClosedHypercube(p,b) = ClosedHyperInterval(a - b,a + b);
begin :: Correspondance between Interval and 1-dimensional HyperInterval
theorem :: SRINGS_5:77
for x being Real holds x in [.r,s.] iff
1 |-> x in ClosedHyperInterval(<*r*>,<*s*>);
theorem :: SRINGS_5:78
for x being Real holds x in ].r,s.[ iff
1 |-> x in OpenHyperInterval(<*r*>,<*s*>);
theorem :: SRINGS_5:79
for x being Real holds x in ].r,s.] iff
1 |-> x in LeftOpenHyperInterval(<*r*>,<*s*>);
theorem :: SRINGS_5:80
for x being Real holds x in [.r,s.[ iff
1 |-> x in RightOpenHyperInterval(<*r*>,<*s*>);
begin :: Correspondence between MeasurableRectangle and Product
reserve n for non zero Nat;
theorem :: SRINGS_5:81
for s being Tuple of n,the_set_of_all_open_real_bounded_intervals holds
ex a,b being Element of REAL n st for i being Nat st i in Seg n holds
s.i = ].a.i,b.i.[;
theorem :: SRINGS_5:82
for x being Element of Product(n,the_set_of_all_open_real_bounded_intervals)
holds (ex a,b being Element of REAL n st
for t being Element of REAL n holds
(t in x iff (for i being Nat st i in Seg n holds t.i in ]. a.i, b.i .[)));
theorem :: SRINGS_5:83
for s being Tuple of n,the_set_of_all_left_open_real_bounded_intervals holds
ex a,b being Element of REAL n st for i being Nat st i in Seg n holds
s.i = ].a.i,b.i.];
theorem :: SRINGS_5:84
for x being Element of
Product(n,the_set_of_all_left_open_real_bounded_intervals)
holds (ex a,b being Element of REAL n st for t being Element of REAL n holds
(t in x iff (for i being Nat st i in Seg n holds t.i in ]. a.i, b.i .])));
theorem :: SRINGS_5:85
for s being Tuple of n,the_set_of_all_right_open_real_bounded_intervals holds
ex a,b being Element of REAL n st for i being Nat st i in Seg n holds
s.i = [.a.i,b.i.[;
theorem :: SRINGS_5:86
for x being Element of
Product(n,the_set_of_all_right_open_real_bounded_intervals)
holds (ex a,b being Element of REAL n st
for t being Element of REAL n holds (t in x iff
(for i being Nat st i in Seg n holds t.i in [. a.i, b.i .[)));
theorem :: SRINGS_5:87
MeasurableRectangle(ProductLeftOpenIntervals(n)) =
Product(n,the_set_of_all_left_open_real_bounded_intervals);
theorem :: SRINGS_5:88
MeasurableRectangle(ProductRightOpenIntervals(n)) =
Product(n,the_set_of_all_right_open_real_bounded_intervals);
begin :: Chebyshev distance
reserve n for non zero Nat,
x,y,z for Element of REAL n;
definition
let n;
func Infty_dist n -> Function of [:REAL n,REAL n:],REAL means
:: SRINGS_5:def 20
for x,y being Element of REAL n holds it.(x,y) = sup rng abs(x-y);
end;
theorem :: SRINGS_5:89
(the set of all |. x.i - y.i .| where
i is Element of Seg n) is real-membered &
(the set of all |. x.i - y.i .| where i is Element of Seg n) = rng abs(x-y);
theorem :: SRINGS_5:90
ex S being ext-real-membered set st S = the set of all |. x.i - y.i .| where
i is Element of Seg n & (Infty_dist n).(x,y) = sup S;
theorem :: SRINGS_5:91
(Infty_dist n).(x,y) = abs (x-y).max_diff_index(x,y);
theorem :: SRINGS_5:92
(Infty_dist n).(x,y) = 0 iff x = y;
theorem :: SRINGS_5:93
(Infty_dist n).(x,y) = (Infty_dist n).(y,x);
theorem :: SRINGS_5:94
(Infty_dist n).(x,y) <= (Infty_dist n).(x,z) + (Infty_dist n).(z,y);
theorem :: SRINGS_5:95
Infty_dist n is_metric_of REAL n;
theorem :: SRINGS_5:96
(Pitag_dist 2).(|[0,0]|,|[1,1]|) = sqrt 2;
theorem :: SRINGS_5:97
(Infty_dist 2).(|[0,0]|,|[1,1]|) = 1;
theorem :: SRINGS_5:98
for x,y being Element of REAL 1 holds (Infty_dist 1).(x,y) = |.x.1-y.1.|;
theorem :: SRINGS_5:99
for x,y being Element of REAL 1 holds (Pitag_dist 1).(x,y) = |.x.1-y.1.|;
theorem :: SRINGS_5:100
Pitag_dist 1 = Infty_dist 1;
theorem :: SRINGS_5:101
Pitag_dist 2 <> Infty_dist 2;
definition
let n being non zero Nat;
func EMINFTY n -> strict MetrSpace equals
:: SRINGS_5:def 21
MetrStruct(#REAL n,Infty_dist n#);
end;
registration
let n being non zero Nat;
cluster EMINFTY n -> non empty;
end;
definition
let n being non zero Nat;
func TOP-REAL-INFTY n -> strict RLTopStruct means
:: SRINGS_5:def 22
the TopStruct of it = TopSpaceMetr EMINFTY n &
the RLSStruct of it = RealVectSpace Seg n;
end;
theorem :: SRINGS_5:102
the RLSStruct of TOP-REAL n = the RLSStruct of TOP-REAL-INFTY n;
registration
let n being non zero Nat;
cluster TOP-REAL-INFTY n -> non empty;
end;
theorem :: SRINGS_5:103
for x being Element of REAL 0 holds Intervals(x,r) is empty &
product Intervals(x,r) = {{}};
theorem :: SRINGS_5:104
r <= 0 implies product Intervals(x,r) is empty;
reserve p for Element of EMINFTY n;
definition
let n being non zero Nat,
p being Element of EMINFTY n;
func @p -> Element of REAL n equals
:: SRINGS_5:def 23
p;
end;
theorem :: SRINGS_5:105
Ball(p,r) = product Intervals(@p,r);
theorem :: SRINGS_5:106
for e being Point of Euclid n st e = p holds Ball(p,r) = OpenHypercube(e,r);
registration
let n be non zero Nat,
p be Element of EMINFTY n,
r be negative Real;
cluster cl_Ball(p,r) -> empty;
end;
theorem :: SRINGS_5:107
for t being object holds t in cl_Ball(p,r) iff
ex f being Function st t = f & dom f = Seg n &
for i being Nat st i in Seg n holds f.i in [.(@p).i-r,(@p).i+r.];
theorem :: SRINGS_5:108
for p being Point of TOP-REAL n, q being Element of EMINFTY n st
q = p holds cl_Ball(q,r) = ClosedHypercube(p,n |-> r);
theorem :: SRINGS_5:109
Ball(p,r) = OpenHyperInterval(@p - (n|-> r), @p + (n|-> r));
theorem :: SRINGS_5:110
cl_Ball(p,r) = ClosedHyperInterval(@p - (n|-> r), @p + (n|-> r));