:: URYSOHN1 semantic presentation

definition
func R<0 -> Subset of REAL means :: URYSOHN1:def 1
for b1 being Real holds
( b1 in a1 iff b1 < 0 );
existence
ex b1 being Subset of REAL st
for b2 being Real holds
( b2 in b1 iff b2 < 0 )
proof end;
uniqueness
for b1, b2 being Subset of REAL st ( for b3 being Real holds
( b3 in b1 iff b3 < 0 ) ) & ( for b3 being Real holds
( b3 in b2 iff b3 < 0 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines R<0 URYSOHN1:def 1 :
for b1 being Subset of REAL holds
( b1 = R<0 iff for b2 being Real holds
( b2 in b1 iff b2 < 0 ) );

definition
func R>1 -> Subset of REAL means :: URYSOHN1:def 2
for b1 being Real holds
( b1 in a1 iff 1 < b1 );
existence
ex b1 being Subset of REAL st
for b2 being Real holds
( b2 in b1 iff 1 < b2 )
proof end;
uniqueness
for b1, b2 being Subset of REAL st ( for b3 being Real holds
( b3 in b1 iff 1 < b3 ) ) & ( for b3 being Real holds
( b3 in b2 iff 1 < b3 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines R>1 URYSOHN1:def 2 :
for b1 being Subset of REAL holds
( b1 = R>1 iff for b2 being Real holds
( b2 in b1 iff 1 < b2 ) );

definition
let c1 be Nat;
func dyadic c1 -> Subset of REAL means :Def3: :: URYSOHN1:def 3
for b1 being Real holds
( b1 in a2 iff ex b2 being Nat st
( 0 <= b2 & b2 <= 2 |^ a1 & b1 = b2 / (2 |^ a1) ) );
existence
ex b1 being Subset of REAL st
for b2 being Real holds
( b2 in b1 iff ex b3 being Nat st
( 0 <= b3 & b3 <= 2 |^ c1 & b2 = b3 / (2 |^ c1) ) )
proof end;
uniqueness
for b1, b2 being Subset of REAL st ( for b3 being Real holds
( b3 in b1 iff ex b4 being Nat st
( 0 <= b4 & b4 <= 2 |^ c1 & b3 = b4 / (2 |^ c1) ) ) ) & ( for b3 being Real holds
( b3 in b2 iff ex b4 being Nat st
( 0 <= b4 & b4 <= 2 |^ c1 & b3 = b4 / (2 |^ c1) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines dyadic URYSOHN1:def 3 :
for b1 being Nat
for b2 being Subset of REAL holds
( b2 = dyadic b1 iff for b3 being Real holds
( b3 in b2 iff ex b4 being Nat st
( 0 <= b4 & b4 <= 2 |^ b1 & b3 = b4 / (2 |^ b1) ) ) );

definition
func DYADIC -> Subset of REAL means :Def4: :: URYSOHN1:def 4
for b1 being Real holds
( b1 in a1 iff ex b2 being Nat st b1 in dyadic b2 );
existence
ex b1 being Subset of REAL st
for b2 being Real holds
( b2 in b1 iff ex b3 being Nat st b2 in dyadic b3 )
proof end;
uniqueness
for b1, b2 being Subset of REAL st ( for b3 being Real holds
( b3 in b1 iff ex b4 being Nat st b3 in dyadic b4 ) ) & ( for b3 being Real holds
( b3 in b2 iff ex b4 being Nat st b3 in dyadic b4 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines DYADIC URYSOHN1:def 4 :
for b1 being Subset of REAL holds
( b1 = DYADIC iff for b2 being Real holds
( b2 in b1 iff ex b3 being Nat st b2 in dyadic b3 ) );

definition
func DOM -> Subset of REAL equals :: URYSOHN1:def 5
(R<0 \/ DYADIC ) \/ R>1 ;
coherence
(R<0 \/ DYADIC ) \/ R>1 is Subset of REAL
;
end;

:: deftheorem Def5 defines DOM URYSOHN1:def 5 :
DOM = (R<0 \/ DYADIC ) \/ R>1 ;

definition
let c1 be TopSpace;
let c2 be non empty Subset of REAL ;
let c3 be Function of c2, bool the carrier of c1;
let c4 be Element of c2;
redefine func . as c3 . c4 -> Subset of a1;
coherence
c3 . c4 is Subset of c1
proof end;
end;

theorem Th1: :: URYSOHN1:1
canceled;

theorem Th2: :: URYSOHN1:2
canceled;

theorem Th3: :: URYSOHN1:3
canceled;

theorem Th4: :: URYSOHN1:4
canceled;

theorem Th5: :: URYSOHN1:5
for b1 being Nat
for b2 being Real st b2 in dyadic b1 holds
( 0 <= b2 & b2 <= 1 )
proof end;

theorem Th6: :: URYSOHN1:6
dyadic 0 = {0,1}
proof end;

theorem Th7: :: URYSOHN1:7
dyadic 1 = {0,(1 / 2),1}
proof end;

registration
let c1 be Nat;
cluster dyadic a1 -> non empty ;
coherence
not dyadic c1 is empty
proof end;
end;

theorem Th8: :: URYSOHN1:8
canceled;

theorem Th9: :: URYSOHN1:9
for b1 being Nat ex b2 being FinSequence st
( dom b2 = Seg ((2 |^ b1) + 1) & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = (b3 - 1) / (2 |^ b1) ) )
proof end;

definition
let c1 be Nat;
func dyad c1 -> FinSequence means :Def6: :: URYSOHN1:def 6
( dom a2 = Seg ((2 |^ a1) + 1) & ( for b1 being Nat st b1 in dom a2 holds
a2 . b1 = (b1 - 1) / (2 |^ a1) ) );
existence
ex b1 being FinSequence st
( dom b1 = Seg ((2 |^ c1) + 1) & ( for b2 being Nat st b2 in dom b1 holds
b1 . b2 = (b2 - 1) / (2 |^ c1) ) )
by Th9;
uniqueness
for b1, b2 being FinSequence st dom b1 = Seg ((2 |^ c1) + 1) & ( for b3 being Nat st b3 in dom b1 holds
b1 . b3 = (b3 - 1) / (2 |^ c1) ) & dom b2 = Seg ((2 |^ c1) + 1) & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = (b3 - 1) / (2 |^ c1) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines dyad URYSOHN1:def 6 :
for b1 being Nat
for b2 being FinSequence holds
( b2 = dyad b1 iff ( dom b2 = Seg ((2 |^ b1) + 1) & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = (b3 - 1) / (2 |^ b1) ) ) );

theorem Th10: :: URYSOHN1:10
for b1 being Nat holds
( dom (dyad b1) = Seg ((2 |^ b1) + 1) & rng (dyad b1) = dyadic b1 )
proof end;

registration
cluster DYADIC -> non empty ;
coherence
not DYADIC is empty
proof end;
end;

registration
cluster DOM -> non empty ;
coherence
not DOM is empty
proof end;
end;

theorem Th11: :: URYSOHN1:11
for b1 being Nat holds dyadic b1 c= dyadic (b1 + 1)
proof end;

theorem Th12: :: URYSOHN1:12
for b1 being Nat holds
( 0 in dyadic b1 & 1 in dyadic b1 )
proof end;

theorem Th13: :: URYSOHN1:13
for b1, b2 being Nat st 0 < b2 & b2 <= 2 |^ b1 holds
((b2 * 2) - 1) / (2 |^ (b1 + 1)) in (dyadic (b1 + 1)) \ (dyadic b1)
proof end;

theorem Th14: :: URYSOHN1:14
for b1, b2 being Nat st 0 <= b2 & b2 < 2 |^ b1 holds
((b2 * 2) + 1) / (2 |^ (b1 + 1)) in (dyadic (b1 + 1)) \ (dyadic b1)
proof end;

theorem Th15: :: URYSOHN1:15
for b1 being Nat holds 1 / (2 |^ (b1 + 1)) in (dyadic (b1 + 1)) \ (dyadic b1)
proof end;

definition
let c1 be Nat;
let c2 be Element of dyadic c1;
func axis c2,c1 -> Nat means :Def7: :: URYSOHN1:def 7
a2 = a3 / (2 |^ a1);
existence
ex b1 being Nat st c2 = b1 / (2 |^ c1)
proof end;
uniqueness
for b1, b2 being Nat st c2 = b1 / (2 |^ c1) & c2 = b2 / (2 |^ c1) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines axis URYSOHN1:def 7 :
for b1 being Nat
for b2 being Element of dyadic b1
for b3 being Nat holds
( b3 = axis b2,b1 iff b2 = b3 / (2 |^ b1) );

theorem Th16: :: URYSOHN1:16
for b1 being Nat
for b2 being Element of dyadic b1 holds
( b2 = (axis b2,b1) / (2 |^ b1) & 0 <= axis b2,b1 & axis b2,b1 <= 2 |^ b1 )
proof end;

theorem Th17: :: URYSOHN1:17
for b1 being Nat
for b2 being Element of dyadic b1 holds
( ((axis b2,b1) - 1) / (2 |^ b1) < b2 & b2 < ((axis b2,b1) + 1) / (2 |^ b1) )
proof end;

theorem Th18: :: URYSOHN1:18
for b1 being Nat
for b2 being Element of dyadic b1 holds ((axis b2,b1) - 1) / (2 |^ b1) < ((axis b2,b1) + 1) / (2 |^ b1)
proof end;

theorem Th19: :: URYSOHN1:19
canceled;

theorem Th20: :: URYSOHN1:20
for b1 being Nat
for b2 being Element of dyadic (b1 + 1) st not b2 in dyadic b1 holds
( ((axis b2,(b1 + 1)) - 1) / (2 |^ (b1 + 1)) in dyadic b1 & ((axis b2,(b1 + 1)) + 1) / (2 |^ (b1 + 1)) in dyadic b1 )
proof end;

theorem Th21: :: URYSOHN1:21
for b1 being Nat
for b2, b3 being Element of dyadic b1 st b2 < b3 holds
axis b2,b1 < axis b3,b1
proof end;

theorem Th22: :: URYSOHN1:22
for b1 being Nat
for b2, b3 being Element of dyadic b1 st b2 < b3 holds
( b2 <= ((axis b3,b1) - 1) / (2 |^ b1) & ((axis b2,b1) + 1) / (2 |^ b1) <= b3 )
proof end;

theorem Th23: :: URYSOHN1:23
for b1 being Nat
for b2, b3 being Element of dyadic (b1 + 1) st b2 < b3 & not b2 in dyadic b1 & not b3 in dyadic b1 holds
((axis b2,(b1 + 1)) + 1) / (2 |^ (b1 + 1)) <= ((axis b3,(b1 + 1)) - 1) / (2 |^ (b1 + 1))
proof end;

notation
let c1 be non empty TopSpace;
let c2 be Point of c1;
synonym Nbhd of c2,c1 for a_neighborhood of c2;
end;

definition
let c1 be non empty TopSpace;
let c2 be Point of c1;
redefine mode a_neighborhood of c2 -> Element of bool the carrier of a1 means :: URYSOHN1:def 8
ex b1 being Subset of a1 st
( b1 is open & a2 in b1 & b1 c= a3 );
compatibility
for b1 being Element of bool the carrier of c1 holds
( b1 is Nbhd of c2,c1 iff ex b2 being Subset of c1 st
( b2 is open & c2 in b2 & b2 c= b1 ) )
proof end;
end;

:: deftheorem Def8 defines Nbhd URYSOHN1:def 8 :
for b1 being non empty TopSpace
for b2 being Point of b1
for b3 being Element of bool the carrier of b1 holds
( b3 is Nbhd of b2,b1 iff ex b4 being Subset of b1 st
( b4 is open & b2 in b4 & b4 c= b3 ) );

theorem Th24: :: URYSOHN1:24
for b1 being non empty TopSpace
for b2 being Subset of b1 holds
( b2 is open iff for b3 being Point of b1 st b3 in b2 holds
ex b4 being Nbhd of b3,b1 st b4 c= b2 )
proof end;

theorem Th25: :: URYSOHN1:25
canceled;

theorem Th26: :: URYSOHN1:26
for b1 being non empty TopSpace
for b2 being Subset of b1 st ( for b3 being Point of b1 st b3 in b2 holds
b2 is Nbhd of b3,b1 ) holds
b2 is open
proof end;

definition
let c1 be TopStruct ;
attr a1 is being_T1 means :Def9: :: URYSOHN1:def 9
for b1, b2 being Point of a1 st not b1 = b2 holds
ex b3, b4 being Subset of a1 st
( b3 is open & b4 is open & b1 in b3 & not b2 in b3 & b2 in b4 & not b1 in b4 );
end;

:: deftheorem Def9 defines being_T1 URYSOHN1:def 9 :
for b1 being TopStruct holds
( b1 is being_T1 iff for b2, b3 being Point of b1 st not b2 = b3 holds
ex b4, b5 being Subset of b1 st
( b4 is open & b5 is open & b2 in b4 & not b3 in b4 & b3 in b5 & not b2 in b5 ) );

notation
let c1 be TopStruct ;
synonym c1 is_T1 for being_T1 c1;
end;

theorem Th27: :: URYSOHN1:27
for b1 being non empty TopSpace holds
( b1 is_T1 iff for b2 being Point of b1 holds {b2} is closed )
proof end;

definition
let c1 be non empty TopSpace;
let c2 be Function of c1,R^1 ;
let c3 be Point of c1;
redefine func . as c2 . c3 -> Real;
coherence
c2 . c3 is Real
by FUNCT_2:7, TOPMETR:24;
end;

theorem Th28: :: URYSOHN1:28
for b1 being non empty TopSpace st b1 is_T4 holds
for b2, b3 being open Subset of b1 st b2 <> {} & Cl b2 c= b3 holds
ex b4 being Subset of b1 st
( b4 <> {} & b4 is open & Cl b2 c= b4 & Cl b4 c= b3 )
proof end;

theorem Th29: :: URYSOHN1:29
for b1 being TopSpace holds
( b1 is_T3 iff for b2 being open Subset of b1
for b3 being Point of b1 st b3 in b2 holds
ex b4 being open Subset of b1 st
( b3 in b4 & Cl b4 c= b2 ) )
proof end;

theorem Th30: :: URYSOHN1:30
for b1 being non empty TopSpace st b1 is_T4 & b1 is_T1 holds
for b2 being open Subset of b1 st b2 <> {} holds
ex b3 being Subset of b1 st
( b3 <> {} & Cl b3 c= b2 )
proof end;

theorem Th31: :: URYSOHN1:31
for b1 being non empty TopSpace st b1 is_T4 holds
for b2, b3 being Subset of b1 st b2 is open & b3 is closed & b3 <> {} & b3 c= b2 holds
ex b4 being Subset of b1 st
( b4 is open & b3 c= b4 & Cl b4 c= b2 )
proof end;

definition
let c1 be non empty TopSpace;
let c2, c3 be Subset of c1;
assume E23: ( c1 is_T4 & c2 <> {} & c2 is open & c3 is open & Cl c2 c= c3 ) ;
mode Between of c2,c3 -> Subset of a1 means :Def10: :: URYSOHN1:def 10
( a4 <> {} & a4 is open & Cl a2 c= a4 & Cl a4 c= a3 );
existence
ex b1 being Subset of c1 st
( b1 <> {} & b1 is open & Cl c2 c= b1 & Cl b1 c= c3 )
by E23, Th28;
end;

:: deftheorem Def10 defines Between URYSOHN1:def 10 :
for b1 being non empty TopSpace
for b2, b3 being Subset of b1 st b1 is_T4 & b2 <> {} & b2 is open & b3 is open & Cl b2 c= b3 holds
for b4 being Subset of b1 holds
( b4 is Between of b2,b3 iff ( b4 <> {} & b4 is open & Cl b2 c= b4 & Cl b4 c= b3 ) );

theorem Th32: :: URYSOHN1:32
for b1 being non empty TopSpace st b1 is_T4 holds
for b2, b3 being closed Subset of b1 st b2 <> {} & b2 misses b3 holds
for b4 being Nat
for b5 being Function of dyadic b4, bool the carrier of b1 st b2 c= b5 . 0 & b3 = ([#] b1) \ (b5 . 1) & ( for b6, b7 being Element of dyadic b4 st b6 < b7 holds
( b5 . b6 is open & b5 . b7 is open & Cl (b5 . b6) c= b5 . b7 ) ) holds
ex b6 being Function of dyadic (b4 + 1), bool the carrier of b1 st
( b2 c= b6 . 0 & b3 = ([#] b1) \ (b6 . 1) & ( for b7, b8, b9 being Element of dyadic (b4 + 1) st b7 < b8 holds
( b6 . b7 is open & b6 . b8 is open & Cl (b6 . b7) c= b6 . b8 & ( b9 in dyadic b4 implies b6 . b9 = b5 . b9 ) ) ) )
proof end;