:: ANPROJ_1 semantic presentation

notation
let c1 be RealLinearSpace;
let c2 be Element of c1;
synonym c2 is_Prop_Vect for non-zero c2;
end;

definition
let c1 be RealLinearSpace;
let c2, c3 be Element of c1;
canceled;
pred are_Prop c2,c3 means :Def2: :: ANPROJ_1:def 2
ex b1, b2 being Real st
( b1 * a2 = b2 * a3 & b1 <> 0 & b2 <> 0 );
reflexivity
for b1 being Element of c1 ex b2, b3 being Real st
( b2 * b1 = b3 * b1 & b2 <> 0 & b3 <> 0 )
proof end;
symmetry
for b1, b2 being Element of c1 st ex b3, b4 being Real st
( b3 * b1 = b4 * b2 & b3 <> 0 & b4 <> 0 ) holds
ex b3, b4 being Real st
( b3 * b2 = b4 * b1 & b3 <> 0 & b4 <> 0 )
;
end;

:: deftheorem Def1 ANPROJ_1:def 1 :
canceled;

:: deftheorem Def2 defines are_Prop ANPROJ_1:def 2 :
for b1 being RealLinearSpace
for b2, b3 being Element of b1 holds
( are_Prop b2,b3 iff ex b4, b5 being Real st
( b4 * b2 = b5 * b3 & b4 <> 0 & b5 <> 0 ) );

theorem Th1: :: ANPROJ_1:1
canceled;

theorem Th2: :: ANPROJ_1:2
canceled;

theorem Th3: :: ANPROJ_1:3
canceled;

theorem Th4: :: ANPROJ_1:4
canceled;

theorem Th5: :: ANPROJ_1:5
for b1 being RealLinearSpace
for b2, b3 being Element of b1 holds
( are_Prop b2,b3 iff ex b4 being Real st
( b4 <> 0 & b2 = b4 * b3 ) )
proof end;

theorem Th6: :: ANPROJ_1:6
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st are_Prop b2,b3 & are_Prop b3,b4 holds
are_Prop b2,b4
proof end;

theorem Th7: :: ANPROJ_1:7
for b1 being RealLinearSpace
for b2 being Element of b1 holds
( are_Prop b2, 0. b1 iff b2 = 0. b1 )
proof end;

definition
let c1 be RealLinearSpace;
let c2, c3, c4 be Element of c1;
pred c2,c3,c4 are_LinDep means :Def3: :: ANPROJ_1:def 3
ex b1, b2, b3 being Real st
( ((b1 * a2) + (b2 * a3)) + (b3 * a4) = 0. a1 & ( b1 <> 0 or b2 <> 0 or b3 <> 0 ) );
end;

:: deftheorem Def3 defines are_LinDep ANPROJ_1:def 3 :
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 holds
( b2,b3,b4 are_LinDep iff ex b5, b6, b7 being Real st
( ((b5 * b2) + (b6 * b3)) + (b7 * b4) = 0. b1 & ( b5 <> 0 or b6 <> 0 or b7 <> 0 ) ) );

theorem Th8: :: ANPROJ_1:8
canceled;

theorem Th9: :: ANPROJ_1:9
for b1 being RealLinearSpace
for b2, b3, b4, b5, b6, b7 being Element of b1 st are_Prop b2,b3 & are_Prop b4,b5 & are_Prop b6,b7 & b2,b4,b6 are_LinDep holds
b3,b5,b7 are_LinDep
proof end;

theorem Th10: :: ANPROJ_1:10
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st b2,b3,b4 are_LinDep holds
( b2,b4,b3 are_LinDep & b3,b2,b4 are_LinDep & b4,b3,b2 are_LinDep & b4,b2,b3 are_LinDep & b3,b4,b2 are_LinDep )
proof end;

Lemma8: for b1 being RealLinearSpace
for b2, b3 being Element of b1
for b4, b5 being Real st (b4 * b2) + (b5 * b3) = 0. b1 holds
b4 * b2 = (- b5) * b3
proof end;

Lemma9: for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1
for b5, b6, b7 being Real st ((b5 * b2) + (b6 * b3)) + (b7 * b4) = 0. b1 & b5 <> 0 holds
b2 = ((- ((b5 " ) * b6)) * b3) + ((- ((b5 " ) * b7)) * b4)
proof end;

theorem Th11: :: ANPROJ_1:11
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st b2 is_Prop_Vect & b3 is_Prop_Vect & not are_Prop b2,b3 holds
( b2,b3,b4 are_LinDep iff ex b5, b6 being Real st b4 = (b5 * b2) + (b6 * b3) )
proof end;

Lemma11: for b1 being RealLinearSpace
for b2 being Element of b1
for b3, b4, b5 being Real holds ((b3 + b4) + b5) * b2 = ((b3 * b2) + (b4 * b2)) + (b5 * b2)
proof end;

Lemma12: for b1 being RealLinearSpace
for b2, b3, b4, b5, b6, b7 being Element of b1 holds ((b2 + b3) + b4) + ((b5 + b6) + b7) = ((b2 + b5) + (b3 + b6)) + (b4 + b7)
proof end;

Lemma13: for b1 being RealLinearSpace
for b2, b3 being Element of b1
for b4, b5, b6 being Real holds ((b4 * b5) * b2) + ((b4 * b6) * b3) = b4 * ((b5 * b2) + (b6 * b3))
proof end;

theorem Th12: :: ANPROJ_1:12
for b1 being RealLinearSpace
for b2, b3 being Element of b1
for b4, b5, b6, b7 being Real st not are_Prop b2,b3 & (b4 * b2) + (b5 * b3) = (b6 * b2) + (b7 * b3) & b2 is_Prop_Vect & b3 is_Prop_Vect holds
( b4 = b6 & b5 = b7 )
proof end;

Lemma14: for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1
for b5, b6 being Real st b2 + (b5 * b3) = b4 + (b6 * b3) holds
((b5 - b6) * b3) + b2 = b4
proof end;

theorem Th13: :: ANPROJ_1:13
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1
for b5, b6, b7, b8, b9, b10 being Real st not b2,b3,b4 are_LinDep & ((b5 * b2) + (b6 * b3)) + (b7 * b4) = ((b8 * b2) + (b9 * b3)) + (b10 * b4) holds
( b5 = b8 & b6 = b9 & b7 = b10 )
proof end;

theorem Th14: :: ANPROJ_1:14
for b1 being RealLinearSpace
for b2, b3, b4, b5 being Element of b1
for b6, b7, b8, b9 being Real st not are_Prop b2,b3 & b4 = (b6 * b2) + (b7 * b3) & b5 = (b8 * b2) + (b9 * b3) & (b6 * b9) - (b8 * b7) = 0 & b2 is_Prop_Vect & b3 is_Prop_Vect & not are_Prop b4,b5 & not b4 = 0. b1 holds
b5 = 0. b1
proof end;

theorem Th15: :: ANPROJ_1:15
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st ( b2 = 0. b1 or b3 = 0. b1 or b4 = 0. b1 ) holds
b2,b3,b4 are_LinDep
proof end;

theorem Th16: :: ANPROJ_1:16
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st ( are_Prop b2,b3 or are_Prop b4,b2 or are_Prop b3,b4 ) holds
b4,b2,b3 are_LinDep
proof end;

theorem Th17: :: ANPROJ_1:17
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st not b2,b3,b4 are_LinDep holds
( b2 is_Prop_Vect & b3 is_Prop_Vect & b4 is_Prop_Vect & not are_Prop b2,b3 & not are_Prop b3,b4 & not are_Prop b4,b2 )
proof end;

theorem Th18: :: ANPROJ_1:18
for b1 being RealLinearSpace
for b2, b3 being Element of b1 st b2 + b3 = 0. b1 holds
are_Prop b2,b3
proof end;

theorem Th19: :: ANPROJ_1:19
for b1 being RealLinearSpace
for b2, b3, b4, b5, b6 being Element of b1 st not are_Prop b2,b3 & b2,b3,b4 are_LinDep & b2,b3,b5 are_LinDep & b2,b3,b6 are_LinDep & b2 is_Prop_Vect & b3 is_Prop_Vect holds
b4,b5,b6 are_LinDep
proof end;

Lemma21: for b1 being RealLinearSpace
for b2, b3 being Element of b1
for b4, b5, b6 being Real holds b4 * ((b5 * b2) + (b6 * b3)) = ((b4 * b5) * b2) + ((b4 * b6) * b3)
proof end;

theorem Th20: :: ANPROJ_1:20
for b1 being RealLinearSpace
for b2, b3, b4, b5, b6 being Element of b1 st not b2,b3,b4 are_LinDep & b2,b3,b5 are_LinDep & b3,b4,b6 are_LinDep holds
ex b7 being Element of b1 st
( b2,b4,b7 are_LinDep & b5,b6,b7 are_LinDep & b7 is_Prop_Vect )
proof end;

theorem Th21: :: ANPROJ_1:21
for b1 being RealLinearSpace
for b2, b3 being Element of b1 st not are_Prop b2,b3 & b2 is_Prop_Vect & b3 is_Prop_Vect holds
for b4, b5 being Element of b1 ex b6 being Element of b1 st
( b6 is_Prop_Vect & b4,b5,b6 are_LinDep & not are_Prop b4,b6 & not are_Prop b5,b6 )
proof end;

Lemma22: for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st not b2,b3,b4 are_LinDep holds
for b5, b6 being Element of b1 st b5 is_Prop_Vect & b6 is_Prop_Vect & not are_Prop b5,b6 holds
ex b7 being Element of b1 st not b5,b6,b7 are_LinDep
proof end;

theorem Th22: :: ANPROJ_1:22
for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1 st not b2,b3,b4 are_LinDep holds
for b5, b6 being Element of b1 st b5 is_Prop_Vect & b6 is_Prop_Vect & not are_Prop b5,b6 holds
ex b7 being Element of b1 st
( b7 is_Prop_Vect & not b5,b6,b7 are_LinDep )
proof end;

Lemma23: for b1 being RealLinearSpace
for b2, b3, b4 being Element of b1
for b5, b6, b7, b8, b9, b10, b11, b12, b13 being Real holds ((b11 * ((b5 * b2) + (b6 * b3))) + (b12 * ((b7 * b3) + (b8 * b4)))) + (b13 * ((b9 * b2) + (b10 * b4))) = ((((b11 * b5) + (b13 * b9)) * b2) + (((b11 * b6) + (b12 * b7)) * b3)) + (((b12 * b8) + (b13 * b10)) * b4)
proof end;

theorem Th23: :: ANPROJ_1:23
for b1 being RealLinearSpace
for b2, b3, b4, b5, b6, b7, b8 being Element of b1 st b2,b3,b4 are_LinDep & b5,b6,b4 are_LinDep & b2,b5,b7 are_LinDep & b3,b6,b7 are_LinDep & b2,b6,b8 are_LinDep & b3,b5,b8 are_LinDep & b7,b4,b8 are_LinDep & b7 is_Prop_Vect & b4 is_Prop_Vect & b8 is_Prop_Vect & not b2,b3,b6 are_LinDep & not b2,b3,b5 are_LinDep & not b2,b5,b6 are_LinDep holds
b3,b5,b6 are_LinDep
proof end;

definition
let c1 be RealLinearSpace;
func Proper_Vectors_of c1 -> set means :Def4: :: ANPROJ_1:def 4
for b1 being set holds
( b1 in a2 iff ( b1 <> 0. a1 & b1 is Element of a1 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ( b2 <> 0. c1 & b2 is Element of c1 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ( b3 <> 0. c1 & b3 is Element of c1 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ( b3 <> 0. c1 & b3 is Element of c1 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines Proper_Vectors_of ANPROJ_1:def 4 :
for b1 being RealLinearSpace
for b2 being set holds
( b2 = Proper_Vectors_of b1 iff for b3 being set holds
( b3 in b2 iff ( b3 <> 0. b1 & b3 is Element of b1 ) ) );

theorem Th24: :: ANPROJ_1:24
canceled;

theorem Th25: :: ANPROJ_1:25
canceled;

theorem Th26: :: ANPROJ_1:26
for b1 being RealLinearSpace
for b2 being Element of b1 holds
( b2 in Proper_Vectors_of b1 iff b2 is_Prop_Vect )
proof end;

definition
let c1 be RealLinearSpace;
func Proportionality_as_EqRel_of c1 -> Equivalence_Relation of Proper_Vectors_of a1 means :Def5: :: ANPROJ_1:def 5
for b1, b2 being set holds
( [b1,b2] in a2 iff ( b1 in Proper_Vectors_of a1 & b2 in Proper_Vectors_of a1 & ex b3, b4 being Element of a1 st
( b1 = b3 & b2 = b4 & are_Prop b3,b4 ) ) );
existence
ex b1 being Equivalence_Relation of Proper_Vectors_of c1 st
for b2, b3 being set holds
( [b2,b3] in b1 iff ( b2 in Proper_Vectors_of c1 & b3 in Proper_Vectors_of c1 & ex b4, b5 being Element of c1 st
( b2 = b4 & b3 = b5 & are_Prop b4,b5 ) ) )
proof end;
uniqueness
for b1, b2 being Equivalence_Relation of Proper_Vectors_of c1 st ( for b3, b4 being set holds
( [b3,b4] in b1 iff ( b3 in Proper_Vectors_of c1 & b4 in Proper_Vectors_of c1 & ex b5, b6 being Element of c1 st
( b3 = b5 & b4 = b6 & are_Prop b5,b6 ) ) ) ) & ( for b3, b4 being set holds
( [b3,b4] in b2 iff ( b3 in Proper_Vectors_of c1 & b4 in Proper_Vectors_of c1 & ex b5, b6 being Element of c1 st
( b3 = b5 & b4 = b6 & are_Prop b5,b6 ) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Proportionality_as_EqRel_of ANPROJ_1:def 5 :
for b1 being RealLinearSpace
for b2 being Equivalence_Relation of Proper_Vectors_of b1 holds
( b2 = Proportionality_as_EqRel_of b1 iff for b3, b4 being set holds
( [b3,b4] in b2 iff ( b3 in Proper_Vectors_of b1 & b4 in Proper_Vectors_of b1 & ex b5, b6 being Element of b1 st
( b3 = b5 & b4 = b6 & are_Prop b5,b6 ) ) ) );

theorem Th27: :: ANPROJ_1:27
canceled;

theorem Th28: :: ANPROJ_1:28
for b1 being RealLinearSpace
for b2, b3 being set st [b2,b3] in Proportionality_as_EqRel_of b1 holds
( b2 is Element of b1 & b3 is Element of b1 )
proof end;

theorem Th29: :: ANPROJ_1:29
for b1 being RealLinearSpace
for b2, b3 being Element of b1 holds
( [b2,b3] in Proportionality_as_EqRel_of b1 iff ( b2 is_Prop_Vect & b3 is_Prop_Vect & are_Prop b2,b3 ) )
proof end;

definition
let c1 be RealLinearSpace;
let c2 be Element of c1;
func Dir c2 -> Subset of (Proper_Vectors_of a1) equals :: ANPROJ_1:def 6
Class (Proportionality_as_EqRel_of a1),a2;
correctness
coherence
Class (Proportionality_as_EqRel_of c1),c2 is Subset of (Proper_Vectors_of c1)
;
;
end;

:: deftheorem Def6 defines Dir ANPROJ_1:def 6 :
for b1 being RealLinearSpace
for b2 being Element of b1 holds Dir b2 = Class (Proportionality_as_EqRel_of b1),b2;

definition
let c1 be RealLinearSpace;
func ProjectivePoints c1 -> set means :Def7: :: ANPROJ_1:def 7
ex b1 being Subset-Family of (Proper_Vectors_of a1) st
( b1 = Class (Proportionality_as_EqRel_of a1) & a2 = b1 );
correctness
existence
ex b1 being set ex b2 being Subset-Family of (Proper_Vectors_of c1) st
( b2 = Class (Proportionality_as_EqRel_of c1) & b1 = b2 )
;
uniqueness
for b1, b2 being set st ex b3 being Subset-Family of (Proper_Vectors_of c1) st
( b3 = Class (Proportionality_as_EqRel_of c1) & b1 = b3 ) & ex b3 being Subset-Family of (Proper_Vectors_of c1) st
( b3 = Class (Proportionality_as_EqRel_of c1) & b2 = b3 ) holds
b1 = b2
;
;
end;

:: deftheorem Def7 defines ProjectivePoints ANPROJ_1:def 7 :
for b1 being RealLinearSpace
for b2 being set holds
( b2 = ProjectivePoints b1 iff ex b3 being Subset-Family of (Proper_Vectors_of b1) st
( b3 = Class (Proportionality_as_EqRel_of b1) & b2 = b3 ) );

definition
let c1 be non empty ZeroStr ;
redefine attr a1 is trivial means :Def8: :: ANPROJ_1:def 8
for b1 being Element of a1 holds b1 = 0. a1;
compatibility
( c1 is trivial iff for b1 being Element of c1 holds b1 = 0. c1 )
proof end;
end;

:: deftheorem Def8 defines trivial ANPROJ_1:def 8 :
for b1 being non empty ZeroStr holds
( b1 is trivial iff for b2 being Element of b1 holds b2 = 0. b1 );

registration
cluster strict non trivial RLSStruct ;
existence
ex b1 being RealLinearSpace st
( b1 is strict & not b1 is trivial )
proof end;
end;

theorem Th30: :: ANPROJ_1:30
canceled;

theorem Th31: :: ANPROJ_1:31
canceled;

theorem Th32: :: ANPROJ_1:32
canceled;

theorem Th33: :: ANPROJ_1:33
for b1 being RealLinearSpace holds
( b1 is non trivial RealLinearSpace iff ex b2 being Element of b1 st b2 in Proper_Vectors_of b1 )
proof end;

registration
let c1 be non trivial RealLinearSpace;
cluster Proper_Vectors_of a1 -> non empty ;
coherence
not Proper_Vectors_of c1 is empty
proof end;
cluster ProjectivePoints a1 -> non empty ;
coherence
not ProjectivePoints c1 is empty
proof end;
end;

theorem Th34: :: ANPROJ_1:34
for b1 being non trivial RealLinearSpace
for b2 being Element of b1 st b2 is_Prop_Vect holds
Dir b2 is Element of ProjectivePoints b1
proof end;

theorem Th35: :: ANPROJ_1:35
for b1 being non trivial RealLinearSpace
for b2, b3 being Element of b1 st b2 is_Prop_Vect & b3 is_Prop_Vect holds
( Dir b2 = Dir b3 iff are_Prop b2,b3 )
proof end;

definition
let c1 be non trivial RealLinearSpace;
func ProjectiveCollinearity c1 -> Relation3 of ProjectivePoints a1 means :Def9: :: ANPROJ_1:def 9
for b1, b2, b3 being set holds
( [b1,b2,b3] in a2 iff ex b4, b5, b6 being Element of a1 st
( b1 = Dir b4 & b2 = Dir b5 & b3 = Dir b6 & b4 is_Prop_Vect & b5 is_Prop_Vect & b6 is_Prop_Vect & b4,b5,b6 are_LinDep ) );
existence
ex b1 being Relation3 of ProjectivePoints c1 st
for b2, b3, b4 being set holds
( [b2,b3,b4] in b1 iff ex b5, b6, b7 being Element of c1 st
( b2 = Dir b5 & b3 = Dir b6 & b4 = Dir b7 & b5 is_Prop_Vect & b6 is_Prop_Vect & b7 is_Prop_Vect & b5,b6,b7 are_LinDep ) )
proof end;
uniqueness
for b1, b2 being Relation3 of ProjectivePoints c1 st ( for b3, b4, b5 being set holds
( [b3,b4,b5] in b1 iff ex b6, b7, b8 being Element of c1 st
( b3 = Dir b6 & b4 = Dir b7 & b5 = Dir b8 & b6 is_Prop_Vect & b7 is_Prop_Vect & b8 is_Prop_Vect & b6,b7,b8 are_LinDep ) ) ) & ( for b3, b4, b5 being set holds
( [b3,b4,b5] in b2 iff ex b6, b7, b8 being Element of c1 st
( b3 = Dir b6 & b4 = Dir b7 & b5 = Dir b8 & b6 is_Prop_Vect & b7 is_Prop_Vect & b8 is_Prop_Vect & b6,b7,b8 are_LinDep ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines ProjectiveCollinearity ANPROJ_1:def 9 :
for b1 being non trivial RealLinearSpace
for b2 being Relation3 of ProjectivePoints b1 holds
( b2 = ProjectiveCollinearity b1 iff for b3, b4, b5 being set holds
( [b3,b4,b5] in b2 iff ex b6, b7, b8 being Element of b1 st
( b3 = Dir b6 & b4 = Dir b7 & b5 = Dir b8 & b6 is_Prop_Vect & b7 is_Prop_Vect & b8 is_Prop_Vect & b6,b7,b8 are_LinDep ) ) );

definition
let c1 be non trivial RealLinearSpace;
func ProjectiveSpace c1 -> strict CollStr equals :: ANPROJ_1:def 10
CollStr(# (ProjectivePoints a1),(ProjectiveCollinearity a1) #);
correctness
coherence
CollStr(# (ProjectivePoints c1),(ProjectiveCollinearity c1) #) is strict CollStr
;
;
end;

:: deftheorem Def10 defines ProjectiveSpace ANPROJ_1:def 10 :
for b1 being non trivial RealLinearSpace holds ProjectiveSpace b1 = CollStr(# (ProjectivePoints b1),(ProjectiveCollinearity b1) #);

registration
let c1 be non trivial RealLinearSpace;
cluster ProjectiveSpace a1 -> non empty strict ;
coherence
not ProjectiveSpace c1 is empty
proof end;
end;

theorem Th36: :: ANPROJ_1:36
canceled;

theorem Th37: :: ANPROJ_1:37
canceled;

theorem Th38: :: ANPROJ_1:38
canceled;

theorem Th39: :: ANPROJ_1:39
for b1 being non trivial RealLinearSpace holds
( the carrier of (ProjectiveSpace b1) = ProjectivePoints b1 & the Collinearity of (ProjectiveSpace b1) = ProjectiveCollinearity b1 ) ;

theorem Th40: :: ANPROJ_1:40
for b1, b2, b3 being set
for b4 being non trivial RealLinearSpace st [b1,b2,b3] in the Collinearity of (ProjectiveSpace b4) holds
ex b5, b6, b7 being Element of b4 st
( b1 = Dir b5 & b2 = Dir b6 & b3 = Dir b7 & b5 is_Prop_Vect & b6 is_Prop_Vect & b7 is_Prop_Vect & b5,b6,b7 are_LinDep ) by Def9;

theorem Th41: :: ANPROJ_1:41
for b1 being non trivial RealLinearSpace
for b2, b3, b4 being Element of b1 st b2 is_Prop_Vect & b3 is_Prop_Vect & b4 is_Prop_Vect holds
( [(Dir b2),(Dir b3),(Dir b4)] in the Collinearity of (ProjectiveSpace b1) iff b2,b3,b4 are_LinDep )
proof end;

theorem Th42: :: ANPROJ_1:42
for b1 being set
for b2 being non trivial RealLinearSpace holds
( b1 is Element of (ProjectiveSpace b2) iff ex b3 being Element of b2 st
( b3 is_Prop_Vect & b1 = Dir b3 ) )
proof end;