:: AFPROJ semantic presentation

theorem Th1: :: AFPROJ:1
for b1 being AffinSpace
for b2 being Subset of b1 st b1 is AffinPlane & b2 = the carrier of b1 holds
b2 is_plane
proof end;

theorem Th2: :: AFPROJ:2
for b1 being AffinSpace
for b2 being Subset of b1 st b1 is AffinPlane & b2 is_plane holds
b2 = the carrier of b1
proof end;

theorem Th3: :: AFPROJ:3
for b1 being AffinSpace
for b2, b3 being Subset of b1 st b1 is AffinPlane & b2 is_plane & b3 is_plane holds
b2 = b3
proof end;

theorem Th4: :: AFPROJ:4
for b1 being AffinSpace
for b2 being Subset of b1 st b2 = the carrier of b1 & b2 is_plane holds
b1 is AffinPlane
proof end;

theorem Th5: :: AFPROJ:5
for b1 being AffinSpace
for b2, b3, b4, b5 being Subset of b1 st not b2 // b3 & b2 '||' b4 & b2 '||' b5 & b3 '||' b4 & b3 '||' b5 & b2 is_line & b3 is_line & b4 is_plane & b5 is_plane holds
b4 '||' b5
proof end;

theorem Th6: :: AFPROJ:6
for b1 being AffinSpace
for b2, b3, b4 being Subset of b1 st b2 is_plane & b3 '||' b2 & b2 '||' b4 holds
b3 '||' b4
proof end;

definition
let c1 be AffinSpace;
func AfLines c1 -> Subset-Family of a1 equals :: AFPROJ:def 1
{ b1 where B is Subset of a1 : b1 is_line } ;
coherence
{ b1 where B is Subset of c1 : b1 is_line } is Subset-Family of c1
proof end;
end;

:: deftheorem Def1 defines AfLines AFPROJ:def 1 :
for b1 being AffinSpace holds AfLines b1 = { b2 where B is Subset of b1 : b2 is_line } ;

definition
let c1 be AffinSpace;
func AfPlanes c1 -> Subset-Family of a1 equals :: AFPROJ:def 2
{ b1 where B is Subset of a1 : b1 is_plane } ;
coherence
{ b1 where B is Subset of c1 : b1 is_plane } is Subset-Family of c1
proof end;
end;

:: deftheorem Def2 defines AfPlanes AFPROJ:def 2 :
for b1 being AffinSpace holds AfPlanes b1 = { b2 where B is Subset of b1 : b2 is_plane } ;

theorem Th7: :: AFPROJ:7
for b1 being AffinSpace
for b2 being set holds
( b2 in AfLines b1 iff ex b3 being Subset of b1 st
( b2 = b3 & b3 is_line ) ) ;

theorem Th8: :: AFPROJ:8
for b1 being AffinSpace
for b2 being set holds
( b2 in AfPlanes b1 iff ex b3 being Subset of b1 st
( b2 = b3 & b3 is_plane ) ) ;

definition
let c1 be AffinSpace;
func LinesParallelity c1 -> Equivalence_Relation of AfLines a1 equals :: AFPROJ:def 3
{ [b1,b2] where B is Subset of a1, B is Subset of a1 : ( b1 is_line & b2 is_line & b1 '||' b2 ) } ;
coherence
{ [b1,b2] where B is Subset of c1, B is Subset of c1 : ( b1 is_line & b2 is_line & b1 '||' b2 ) } is Equivalence_Relation of AfLines c1
proof end;
end;

:: deftheorem Def3 defines LinesParallelity AFPROJ:def 3 :
for b1 being AffinSpace holds LinesParallelity b1 = { [b2,b3] where B is Subset of b1, B is Subset of b1 : ( b2 is_line & b3 is_line & b2 '||' b3 ) } ;

definition
let c1 be AffinSpace;
func PlanesParallelity c1 -> Equivalence_Relation of AfPlanes a1 equals :: AFPROJ:def 4
{ [b1,b2] where B is Subset of a1, B is Subset of a1 : ( b1 is_plane & b2 is_plane & b1 '||' b2 ) } ;
coherence
{ [b1,b2] where B is Subset of c1, B is Subset of c1 : ( b1 is_plane & b2 is_plane & b1 '||' b2 ) } is Equivalence_Relation of AfPlanes c1
proof end;
end;

:: deftheorem Def4 defines PlanesParallelity AFPROJ:def 4 :
for b1 being AffinSpace holds PlanesParallelity b1 = { [b2,b3] where B is Subset of b1, B is Subset of b1 : ( b2 is_plane & b3 is_plane & b2 '||' b3 ) } ;

definition
let c1 be AffinSpace;
let c2 be Subset of c1;
assume c2 is_line ;
func LDir c2 -> Subset of (AfLines a1) equals :Def5: :: AFPROJ:def 5
Class (LinesParallelity a1),a2;
correctness
coherence
Class (LinesParallelity c1),c2 is Subset of (AfLines c1)
;
;
end;

:: deftheorem Def5 defines LDir AFPROJ:def 5 :
for b1 being AffinSpace
for b2 being Subset of b1 st b2 is_line holds
LDir b2 = Class (LinesParallelity b1),b2;

definition
let c1 be AffinSpace;
let c2 be Subset of c1;
assume c2 is_plane ;
func PDir c2 -> Subset of (AfPlanes a1) equals :Def6: :: AFPROJ:def 6
Class (PlanesParallelity a1),a2;
correctness
coherence
Class (PlanesParallelity c1),c2 is Subset of (AfPlanes c1)
;
;
end;

:: deftheorem Def6 defines PDir AFPROJ:def 6 :
for b1 being AffinSpace
for b2 being Subset of b1 st b2 is_plane holds
PDir b2 = Class (PlanesParallelity b1),b2;

theorem Th9: :: AFPROJ:9
for b1 being AffinSpace
for b2 being Subset of b1 st b2 is_line holds
for b3 being set holds
( b3 in LDir b2 iff ex b4 being Subset of b1 st
( b3 = b4 & b4 is_line & b2 '||' b4 ) )
proof end;

theorem Th10: :: AFPROJ:10
for b1 being AffinSpace
for b2 being Subset of b1 st b2 is_plane holds
for b3 being set holds
( b3 in PDir b2 iff ex b4 being Subset of b1 st
( b3 = b4 & b4 is_plane & b2 '||' b4 ) )
proof end;

theorem Th11: :: AFPROJ:11
for b1 being AffinSpace
for b2, b3 being Subset of b1 st b2 is_line & b3 is_line holds
( LDir b2 = LDir b3 iff b2 // b3 )
proof end;

theorem Th12: :: AFPROJ:12
for b1 being AffinSpace
for b2, b3 being Subset of b1 st b2 is_line & b3 is_line holds
( LDir b2 = LDir b3 iff b2 '||' b3 )
proof end;

theorem Th13: :: AFPROJ:13
for b1 being AffinSpace
for b2, b3 being Subset of b1 st b2 is_plane & b3 is_plane holds
( PDir b2 = PDir b3 iff b2 '||' b3 )
proof end;

definition
let c1 be AffinSpace;
func Dir_of_Lines c1 -> non empty set equals :: AFPROJ:def 7
Class (LinesParallelity a1);
coherence
Class (LinesParallelity c1) is non empty set
proof end;
end;

:: deftheorem Def7 defines Dir_of_Lines AFPROJ:def 7 :
for b1 being AffinSpace holds Dir_of_Lines b1 = Class (LinesParallelity b1);

definition
let c1 be AffinSpace;
func Dir_of_Planes c1 -> non empty set equals :: AFPROJ:def 8
Class (PlanesParallelity a1);
coherence
Class (PlanesParallelity c1) is non empty set
proof end;
end;

:: deftheorem Def8 defines Dir_of_Planes AFPROJ:def 8 :
for b1 being AffinSpace holds Dir_of_Planes b1 = Class (PlanesParallelity b1);

theorem Th14: :: AFPROJ:14
for b1 being AffinSpace
for b2 being set holds
( b2 in Dir_of_Lines b1 iff ex b3 being Subset of b1 st
( b2 = LDir b3 & b3 is_line ) )
proof end;

theorem Th15: :: AFPROJ:15
for b1 being AffinSpace
for b2 being set holds
( b2 in Dir_of_Planes b1 iff ex b3 being Subset of b1 st
( b2 = PDir b3 & b3 is_plane ) )
proof end;

theorem Th16: :: AFPROJ:16
for b1 being AffinSpace holds the carrier of b1 misses Dir_of_Lines b1
proof end;

theorem Th17: :: AFPROJ:17
for b1 being AffinSpace st b1 is AffinPlane holds
AfLines b1 misses Dir_of_Planes b1
proof end;

theorem Th18: :: AFPROJ:18
for b1 being AffinSpace
for b2 being set holds
( b2 in [:(AfLines b1),{1}:] iff ex b3 being Subset of b1 st
( b2 = [b3,1] & b3 is_line ) )
proof end;

theorem Th19: :: AFPROJ:19
for b1 being AffinSpace
for b2 being set holds
( b2 in [:(Dir_of_Planes b1),{2}:] iff ex b3 being Subset of b1 st
( b2 = [(PDir b3),2] & b3 is_plane ) )
proof end;

definition
let c1 be AffinSpace;
func ProjectivePoints c1 -> non empty set equals :: AFPROJ:def 9
the carrier of a1 \/ (Dir_of_Lines a1);
correctness
coherence
the carrier of c1 \/ (Dir_of_Lines c1) is non empty set
;
;
end;

:: deftheorem Def9 defines ProjectivePoints AFPROJ:def 9 :
for b1 being AffinSpace holds ProjectivePoints b1 = the carrier of b1 \/ (Dir_of_Lines b1);

definition
let c1 be AffinSpace;
func ProjectiveLines c1 -> non empty set equals :: AFPROJ:def 10
[:(AfLines a1),{1}:] \/ [:(Dir_of_Planes a1),{2}:];
coherence
[:(AfLines c1),{1}:] \/ [:(Dir_of_Planes c1),{2}:] is non empty set
;
end;

:: deftheorem Def10 defines ProjectiveLines AFPROJ:def 10 :
for b1 being AffinSpace holds ProjectiveLines b1 = [:(AfLines b1),{1}:] \/ [:(Dir_of_Planes b1),{2}:];

definition
let c1 be AffinSpace;
func Proj_Inc c1 -> Relation of ProjectivePoints a1, ProjectiveLines a1 means :Def11: :: AFPROJ:def 11
for b1, b2 being set holds
( [b1,b2] in a2 iff ( ex b3 being Subset of a1 st
( b3 is_line & b2 = [b3,1] & ( ( b1 in the carrier of a1 & b1 in b3 ) or b1 = LDir b3 ) ) or ex b3, b4 being Subset of a1 st
( b3 is_line & b4 is_plane & b1 = LDir b3 & b2 = [(PDir b4),2] & b3 '||' b4 ) ) );
existence
ex b1 being Relation of ProjectivePoints c1, ProjectiveLines c1 st
for b2, b3 being set holds
( [b2,b3] in b1 iff ( ex b4 being Subset of c1 st
( b4 is_line & b3 = [b4,1] & ( ( b2 in the carrier of c1 & b2 in b4 ) or b2 = LDir b4 ) ) or ex b4, b5 being Subset of c1 st
( b4 is_line & b5 is_plane & b2 = LDir b4 & b3 = [(PDir b5),2] & b4 '||' b5 ) ) )
proof end;
uniqueness
for b1, b2 being Relation of ProjectivePoints c1, ProjectiveLines c1 st ( for b3, b4 being set holds
( [b3,b4] in b1 iff ( ex b5 being Subset of c1 st
( b5 is_line & b4 = [b5,1] & ( ( b3 in the carrier of c1 & b3 in b5 ) or b3 = LDir b5 ) ) or ex b5, b6 being Subset of c1 st
( b5 is_line & b6 is_plane & b3 = LDir b5 & b4 = [(PDir b6),2] & b5 '||' b6 ) ) ) ) & ( for b3, b4 being set holds
( [b3,b4] in b2 iff ( ex b5 being Subset of c1 st
( b5 is_line & b4 = [b5,1] & ( ( b3 in the carrier of c1 & b3 in b5 ) or b3 = LDir b5 ) ) or ex b5, b6 being Subset of c1 st
( b5 is_line & b6 is_plane & b3 = LDir b5 & b4 = [(PDir b6),2] & b5 '||' b6 ) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines Proj_Inc AFPROJ:def 11 :
for b1 being AffinSpace
for b2 being Relation of ProjectivePoints b1, ProjectiveLines b1 holds
( b2 = Proj_Inc b1 iff for b3, b4 being set holds
( [b3,b4] in b2 iff ( ex b5 being Subset of b1 st
( b5 is_line & b4 = [b5,1] & ( ( b3 in the carrier of b1 & b3 in b5 ) or b3 = LDir b5 ) ) or ex b5, b6 being Subset of b1 st
( b5 is_line & b6 is_plane & b3 = LDir b5 & b4 = [(PDir b6),2] & b5 '||' b6 ) ) ) );

definition
let c1 be AffinSpace;
func Inc_of_Dir c1 -> Relation of Dir_of_Lines a1, Dir_of_Planes a1 means :Def12: :: AFPROJ:def 12
for b1, b2 being set holds
( [b1,b2] in a2 iff ex b3, b4 being Subset of a1 st
( b1 = LDir b3 & b2 = PDir b4 & b3 is_line & b4 is_plane & b3 '||' b4 ) );
existence
ex b1 being Relation of Dir_of_Lines c1, Dir_of_Planes c1 st
for b2, b3 being set holds
( [b2,b3] in b1 iff ex b4, b5 being Subset of c1 st
( b2 = LDir b4 & b3 = PDir b5 & b4 is_line & b5 is_plane & b4 '||' b5 ) )
proof end;
uniqueness
for b1, b2 being Relation of Dir_of_Lines c1, Dir_of_Planes c1 st ( for b3, b4 being set holds
( [b3,b4] in b1 iff ex b5, b6 being Subset of c1 st
( b3 = LDir b5 & b4 = PDir b6 & b5 is_line & b6 is_plane & b5 '||' b6 ) ) ) & ( for b3, b4 being set holds
( [b3,b4] in b2 iff ex b5, b6 being Subset of c1 st
( b3 = LDir b5 & b4 = PDir b6 & b5 is_line & b6 is_plane & b5 '||' b6 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines Inc_of_Dir AFPROJ:def 12 :
for b1 being AffinSpace
for b2 being Relation of Dir_of_Lines b1, Dir_of_Planes b1 holds
( b2 = Inc_of_Dir b1 iff for b3, b4 being set holds
( [b3,b4] in b2 iff ex b5, b6 being Subset of b1 st
( b3 = LDir b5 & b4 = PDir b6 & b5 is_line & b6 is_plane & b5 '||' b6 ) ) );

definition
let c1 be AffinSpace;
func IncProjSp_of c1 -> strict IncProjStr equals :: AFPROJ:def 13
IncProjStr(# (ProjectivePoints a1),(ProjectiveLines a1),(Proj_Inc a1) #);
correctness
coherence
IncProjStr(# (ProjectivePoints c1),(ProjectiveLines c1),(Proj_Inc c1) #) is strict IncProjStr
;
;
end;

:: deftheorem Def13 defines IncProjSp_of AFPROJ:def 13 :
for b1 being AffinSpace holds IncProjSp_of b1 = IncProjStr(# (ProjectivePoints b1),(ProjectiveLines b1),(Proj_Inc b1) #);

definition
let c1 be AffinSpace;
func ProjHorizon c1 -> strict IncProjStr equals :: AFPROJ:def 14
IncProjStr(# (Dir_of_Lines a1),(Dir_of_Planes a1),(Inc_of_Dir a1) #);
correctness
coherence
IncProjStr(# (Dir_of_Lines c1),(Dir_of_Planes c1),(Inc_of_Dir c1) #) is strict IncProjStr
;
;
end;

:: deftheorem Def14 defines ProjHorizon AFPROJ:def 14 :
for b1 being AffinSpace holds ProjHorizon b1 = IncProjStr(# (Dir_of_Lines b1),(Dir_of_Planes b1),(Inc_of_Dir b1) #);

theorem Th20: :: AFPROJ:20
for b1 being AffinSpace
for b2 being set holds
( b2 is POINT of (IncProjSp_of b1) iff ( b2 is Element of b1 or ex b3 being Subset of b1 st
( b2 = LDir b3 & b3 is_line ) ) )
proof end;

theorem Th21: :: AFPROJ:21
for b1 being AffinSpace
for b2 being set holds
( b2 is Element of the Points of (ProjHorizon b1) iff ex b3 being Subset of b1 st
( b2 = LDir b3 & b3 is_line ) ) by Th14;

theorem Th22: :: AFPROJ:22
for b1 being AffinSpace
for b2 being set st b2 is Element of the Points of (ProjHorizon b1) holds
b2 is POINT of (IncProjSp_of b1)
proof end;

theorem Th23: :: AFPROJ:23
for b1 being AffinSpace
for b2 being set holds
( b2 is LINE of (IncProjSp_of b1) iff ex b3 being Subset of b1 st
( ( b2 = [b3,1] & b3 is_line ) or ( b2 = [(PDir b3),2] & b3 is_plane ) ) )
proof end;

theorem Th24: :: AFPROJ:24
for b1 being AffinSpace
for b2 being set holds
( b2 is Element of the Lines of (ProjHorizon b1) iff ex b3 being Subset of b1 st
( b2 = PDir b3 & b3 is_plane ) ) by Th15;

theorem Th25: :: AFPROJ:25
for b1 being AffinSpace
for b2 being set st b2 is Element of the Lines of (ProjHorizon b1) holds
[b2,2] is LINE of (IncProjSp_of b1)
proof end;

theorem Th26: :: AFPROJ:26
for b1 being AffinSpace
for b2 being Element of b1
for b3 being Subset of b1
for b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b2 = b4 & [b3,1] = b5 holds
( b4 on b5 iff ( b3 is_line & b2 in b3 ) )
proof end;

theorem Th27: :: AFPROJ:27
for b1 being AffinSpace
for b2 being Element of b1
for b3 being Subset of b1
for b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b2 = b4 & [(PDir b3),2] = b5 & b3 is_plane holds
not b4 on b5
proof end;

theorem Th28: :: AFPROJ:28
for b1 being AffinSpace
for b2, b3 being Subset of b1
for b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b4 = LDir b2 & [b3,1] = b5 & b2 is_line & b3 is_line holds
( b4 on b5 iff b2 '||' b3 )
proof end;

theorem Th29: :: AFPROJ:29
for b1 being AffinSpace
for b2, b3 being Subset of b1
for b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b4 = LDir b2 & b5 = [(PDir b3),2] & b2 is_line & b3 is_plane holds
( b4 on b5 iff b2 '||' b3 )
proof end;

theorem Th30: :: AFPROJ:30
for b1 being AffinSpace
for b2 being Subset of b1
for b3 being POINT of (IncProjSp_of b1)
for b4 being LINE of (IncProjSp_of b1) st b2 is_line & b3 = LDir b2 & b4 = [b2,1] holds
b3 on b4
proof end;

theorem Th31: :: AFPROJ:31
for b1 being AffinSpace
for b2, b3 being Subset of b1
for b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b2 is_line & b3 is_plane & b2 c= b3 & b4 = LDir b2 & b5 = [(PDir b3),2] holds
b4 on b5
proof end;

theorem Th32: :: AFPROJ:32
for b1 being AffinSpace
for b2, b3, b4 being Subset of b1
for b5 being POINT of (IncProjSp_of b1)
for b6 being LINE of (IncProjSp_of b1) st b2 is_plane & b3 c= b2 & b4 // b3 & b5 = LDir b4 & b6 = [(PDir b2),2] holds
b5 on b6
proof end;

theorem Th33: :: AFPROJ:33
for b1 being AffinSpace
for b2 being Subset of b1
for b3 being POINT of (IncProjSp_of b1)
for b4 being LINE of (IncProjSp_of b1) st b4 = [(PDir b2),2] & b2 is_plane & b3 on b4 holds
not b3 is Element of b1 by Th27;

theorem Th34: :: AFPROJ:34
for b1 being AffinSpace
for b2 being Subset of b1
for b3 being POINT of (IncProjSp_of b1)
for b4 being LINE of (IncProjSp_of b1) st b4 = [b2,1] & b2 is_line & b3 on b4 & b3 is not Element of b1 holds
b3 = LDir b2
proof end;

theorem Th35: :: AFPROJ:35
for b1 being AffinSpace
for b2 being Subset of b1
for b3, b4 being POINT of (IncProjSp_of b1)
for b5 being LINE of (IncProjSp_of b1) st b5 = [b2,1] & b2 is_line & b3 on b5 & b4 on b5 & b4 <> b3 & b3 is not Element of the carrier of b1 holds
b4 is Element of b1
proof end;

theorem Th36: :: AFPROJ:36
for b1 being AffinSpace
for b2, b3 being Subset of b1
for b4 being Element of the Points of (ProjHorizon b1)
for b5 being Element of the Lines of (ProjHorizon b1) st b4 = LDir b2 & b5 = PDir b3 & b2 is_line & b3 is_plane holds
( b4 on b5 iff b2 '||' b3 )
proof end;

theorem Th37: :: AFPROJ:37
for b1 being AffinSpace
for b2 being Element of the Points of (ProjHorizon b1)
for b3 being Element of the Points of (IncProjSp_of b1)
for b4 being Element of the Lines of (ProjHorizon b1)
for b5 being LINE of (IncProjSp_of b1) st b3 = b2 & b5 = [b4,2] holds
( b2 on b4 iff b3 on b5 )
proof end;

theorem Th38: :: AFPROJ:38
for b1 being AffinSpace
for b2, b3 being Element of the Points of (ProjHorizon b1)
for b4, b5 being Element of the Lines of (ProjHorizon b1) st b2 on b4 & b2 on b5 & b3 on b4 & b3 on b5 & not b2 = b3 holds
b4 = b5
proof end;

theorem Th39: :: AFPROJ:39
for b1 being AffinSpace
for b2 being Element of the Lines of (ProjHorizon b1) ex b3, b4, b5 being Element of the Points of (ProjHorizon b1) st
( b3 on b2 & b4 on b2 & b5 on b2 & b3 <> b4 & b4 <> b5 & b5 <> b3 )
proof end;

theorem Th40: :: AFPROJ:40
for b1 being AffinSpace
for b2, b3 being Element of the Points of (ProjHorizon b1) ex b4 being Element of the Lines of (ProjHorizon b1) st
( b2 on b4 & b3 on b4 )
proof end;

Lemma42: for b1 being AffinSpace st b1 is not AffinPlane holds
ex b2 being Element of the Points of (ProjHorizon b1)ex b3 being Element of the Lines of (ProjHorizon b1) st not b2 on b3
proof end;

Lemma43: for b1 being AffinSpace
for b2, b3 being POINT of (IncProjSp_of b1)
for b4, b5 being LINE of (IncProjSp_of b1) st b2 on b4 & b2 on b5 & b3 on b4 & b3 on b5 & not b2 = b3 holds
b4 = b5
proof end;

Lemma44: for b1 being AffinSpace
for b2 being LINE of (IncProjSp_of b1) ex b3, b4, b5 being POINT of (IncProjSp_of b1) st
( b3 on b2 & b4 on b2 & b5 on b2 & b3 <> b4 & b4 <> b5 & b5 <> b3 )
proof end;

Lemma45: for b1 being AffinSpace
for b2, b3 being POINT of (IncProjSp_of b1) ex b4 being LINE of (IncProjSp_of b1) st
( b2 on b4 & b3 on b4 )
proof end;

Lemma46: for b1 being AffinSpace
for b2, b3 being LINE of (IncProjSp_of b1) st b1 is AffinPlane holds
ex b4 being POINT of (IncProjSp_of b1) st
( b4 on b2 & b4 on b3 )
proof end;

Lemma47: for b1 being AffinSpace holds
not for b2 being POINT of (IncProjSp_of b1)
for b3 being LINE of (IncProjSp_of b1) holds b2 on b3
proof end;

theorem Th41: :: AFPROJ:41
for b1 being AffinSpace
for b2, b3 being Element of the Points of (ProjHorizon b1)
for b4 being Element of the Lines of (IncProjSp_of b1) st b2 <> b3 & [b2,b4] in the Inc of (IncProjSp_of b1) & [b3,b4] in the Inc of (IncProjSp_of b1) holds
ex b5 being Element of the Lines of (ProjHorizon b1) st b4 = [b5,2]
proof end;

theorem Th42: :: AFPROJ:42
for b1 being AffinSpace
for b2 being POINT of (IncProjSp_of b1)
for b3 being Element of the Lines of (ProjHorizon b1) st [b2,[b3,2]] in the Inc of (IncProjSp_of b1) holds
b2 is Element of the Points of (ProjHorizon b1)
proof end;

Lemma50: for b1 being AffinSpace
for b2 being Element of b1
for b3, b4, b5, b6 being Subset of b1
for b7, b8, b9 being POINT of (IncProjSp_of b1)
for b10, b11, b12 being LINE of (IncProjSp_of b1) st b3 is_line & b4 is_line & b5 is_plane & b3 c= b5 & b4 c= b5 & b2 = b7 & b10 = [b3,1] & b11 = [b4,1] & b10 <> b11 & b8 on b10 & b9 on b11 & b8 on b12 & b9 on b12 & b8 <> b9 & b12 = [b6,1] & b6 is_line holds
b6 c= b5
proof end;

Lemma51: for b1 being AffinSpace
for b2 being Element of b1
for b3, b4, b5, b6 being Subset of b1
for b7, b8, b9 being POINT of (IncProjSp_of b1)
for b10, b11, b12 being LINE of (IncProjSp_of b1) st b3 is_line & b4 is_line & b5 is_plane & b3 c= b5 & b4 c= b5 & b2 = b7 & b10 = [b3,1] & b11 = [b4,1] & b10 <> b11 & b8 on b10 & b9 on b11 & b8 on b12 & b9 on b12 & b8 <> b9 & b12 = [(PDir b6),2] & b6 is_plane holds
( b6 '||' b5 & b5 '||' b6 )
proof end;

theorem Th43: :: AFPROJ:43
for b1 being AffinSpace
for b2, b3, b4 being Subset of b1
for b5, b6 being LINE of (IncProjSp_of b1) st b2 is_plane & b3 is_line & b4 is_line & b3 c= b2 & b4 c= b2 & b5 = [b3,1] & b6 = [b4,1] holds
ex b7 being POINT of (IncProjSp_of b1) st
( b7 on b5 & b7 on b6 )
proof end;

Lemma53: for b1 being AffinSpace
for b2, b3, b4, b5, b6 being POINT of (IncProjSp_of b1)
for b7, b8, b9, b10 being LINE of (IncProjSp_of b1) st b2 on b7 & b3 on b7 & b4 on b8 & b5 on b8 & b6 on b7 & b6 on b8 & b2 on b9 & b4 on b9 & b3 on b10 & b5 on b10 & not b6 on b9 & not b6 on b10 & b7 <> b8 & b6 is Element of b1 holds
ex b11 being POINT of (IncProjSp_of b1) st
( b11 on b9 & b11 on b10 )
proof end;

Lemma54: for b1 being AffinSpace
for b2, b3, b4, b5, b6 being POINT of (IncProjSp_of b1)
for b7, b8, b9, b10 being LINE of (IncProjSp_of b1) st b2 on b7 & b3 on b7 & b4 on b8 & b5 on b8 & b6 on b7 & b6 on b8 & b2 on b9 & b4 on b9 & b3 on b10 & b5 on b10 & not b6 on b9 & not b6 on b10 & b7 <> b8 & b6 is not Element of b1 & b2 is Element of b1 holds
ex b11 being POINT of (IncProjSp_of b1) st
( b11 on b9 & b11 on b10 )
proof end;

Lemma55: for b1 being AffinSpace
for b2, b3, b4, b5, b6 being POINT of (IncProjSp_of b1)
for b7, b8, b9, b10 being LINE of (IncProjSp_of b1) st b2 on b7 & b3 on b7 & b4 on b8 & b5 on b8 & b6 on b7 & b6 on b8 & b2 on b9 & b4 on b9 & b3 on b10 & b5 on b10 & not b6 on b9 & not b6 on b10 & b7 <> b8 & b6 is not Element of b1 & ( b2 is Element of b1 or b3 is Element of b1 or b4 is Element of b1 or b5 is Element of b1 ) holds
ex b11 being POINT of (IncProjSp_of b1) st
( b11 on b9 & b11 on b10 )
proof end;

Lemma56: for b1 being AffinSpace
for b2, b3, b4, b5, b6 being POINT of (IncProjSp_of b1)
for b7, b8, b9, b10 being LINE of (IncProjSp_of b1) st b2 on b7 & b3 on b7 & b4 on b8 & b5 on b8 & b6 on b7 & b6 on b8 & b2 on b9 & b4 on b9 & b3 on b10 & b5 on b10 & not b6 on b9 & not b6 on b10 & b7 <> b8 holds
ex b11 being POINT of (IncProjSp_of b1) st
( b11 on b9 & b11 on b10 )
proof end;

theorem Th44: :: AFPROJ:44
for b1 being AffinSpace
for b2, b3, b4, b5, b6 being Element of the Points of (ProjHorizon b1)
for b7, b8, b9, b10 being Element of the Lines of (ProjHorizon b1) st b2 on b7 & b3 on b7 & b4 on b8 & b5 on b8 & b6 on b7 & b6 on b8 & b2 on b9 & b4 on b9 & b3 on b10 & b5 on b10 & not b6 on b9 & not b6 on b10 & b7 <> b8 holds
ex b11 being Element of the Points of (ProjHorizon b1) st
( b11 on b9 & b11 on b10 )
proof end;

registration
let c1 be AffinSpace;
cluster IncProjSp_of a1 -> strict partial linear up-2-dimensional up-3-rank Vebleian ;
correctness
coherence
( IncProjSp_of c1 is partial & IncProjSp_of c1 is linear & IncProjSp_of c1 is up-2-dimensional & IncProjSp_of c1 is up-3-rank & IncProjSp_of c1 is Vebleian )
;
proof end;
end;

registration
cluster strict 2-dimensional IncProjStr ;
existence
ex b1 being IncProjSp st
( b1 is strict & b1 is 2-dimensional )
proof end;
end;

registration
let c1 be AffinPlane;
cluster IncProjSp_of a1 -> strict partial linear up-2-dimensional up-3-rank Vebleian 2-dimensional ;
correctness
coherence
IncProjSp_of c1 is 2-dimensional
;
proof end;
end;

theorem Th45: :: AFPROJ:45
for b1 being AffinSpace st IncProjSp_of b1 is 2-dimensional holds
b1 is AffinPlane
proof end;

theorem Th46: :: AFPROJ:46
for b1 being AffinSpace st b1 is not AffinPlane holds
ProjHorizon b1 is IncProjSp
proof end;

theorem Th47: :: AFPROJ:47
for b1 being AffinSpace st ProjHorizon b1 is IncProjSp holds
not b1 is AffinPlane
proof end;

theorem Th48: :: AFPROJ:48
for b1 being AffinSpace
for b2, b3 being Subset of b1
for b4, b5, b6, b7, b8, b9, b10 being Element of the carrier of b1 st b2 is_line & b3 is_line & b2 <> b3 & b4 in b2 & b4 in b3 & b4 <> b5 & b4 <> b8 & b4 <> b6 & b4 <> b9 & b4 <> b7 & b4 <> b10 & b5 in b2 & b6 in b2 & b7 in b2 & b8 in b3 & b9 in b3 & b10 in b3 & b5,b9 // b6,b8 & b6,b10 // b7,b9 & ( b5 = b6 or b6 = b7 or b5 = b7 ) holds
b5,b10 // b7,b8
proof end;

theorem Th49: :: AFPROJ:49
for b1 being AffinSpace st IncProjSp_of b1 is Pappian holds
b1 is Pappian
proof end;

theorem Th50: :: AFPROJ:50
for b1 being AffinSpace
for b2, b3, b4 being Subset of b1
for b5, b6, b7, b8, b9, b10, b11 being Element of the carrier of b1 st b5 in b2 & b5 in b3 & b5 in b4 & b5 <> b6 & b5 <> b7 & b5 <> b8 & b6 in b2 & b9 in b2 & b7 in b3 & b10 in b3 & b8 in b4 & b11 in b4 & b2 is_line & b3 is_line & b4 is_line & b2 <> b3 & b2 <> b4 & b6,b7 // b9,b10 & b6,b8 // b9,b11 & ( b5 = b9 or b6 = b9 ) holds
b7,b8 // b10,b11
proof end;

theorem Th51: :: AFPROJ:51
for b1 being AffinSpace st IncProjSp_of b1 is Desarguesian holds
b1 is Desarguesian
proof end;

theorem Th52: :: AFPROJ:52
for b1 being AffinSpace st IncProjSp_of b1 is Fanoian holds
b1 is Fanoian
proof end;