:: PENCIL_4 semantic presentation

theorem Th1: :: PENCIL_4:1
for b1, b2 being Nat st 1 <= b1 & b1 < b2 & 3 <= b2 & not b1 + 1 < b2 holds
2 <= b1
proof end;

theorem Th2: :: PENCIL_4:2
for b1 being finite set
for b2 being Nat st b2 <= card b1 holds
ex b3 being Subset of b1 st card b3 = b2
proof end;

theorem Th3: :: PENCIL_4:3
for b1 being Field
for b2 being VectSp of b1
for b3 being Subspace of b2 holds b3 is Subspace of (Omega). b2
proof end;

theorem Th4: :: PENCIL_4:4
for b1 being Field
for b2 being VectSp of b1
for b3 being Subspace of (Omega). b2 holds b3 is Subspace of b2
proof end;

theorem Th5: :: PENCIL_4:5
for b1 being Field
for b2 being VectSp of b1
for b3 being Subspace of b2 holds (Omega). b3 is Subspace of b2
proof end;

theorem Th6: :: PENCIL_4:6
for b1 being Field
for b2, b3 being VectSp of b1 st (Omega). b3 is Subspace of b2 holds
b3 is Subspace of b2
proof end;

definition
let c1 be Field;
let c2 be VectSp of c1;
let c3, c4 be Subspace of c2;
func segment c3,c4 -> Subset of (Subspaces a2) means :Def1: :: PENCIL_4:def 1
for b1 being strict Subspace of a2 holds
( b1 in a5 iff ( a3 is Subspace of b1 & b1 is Subspace of a4 ) ) if a3 is Subspace of a4
otherwise a5 = {} ;
consistency
for b1 being Subset of (Subspaces c2) holds verum
;
existence
( ( c3 is Subspace of c4 implies ex b1 being Subset of (Subspaces c2) st
for b2 being strict Subspace of c2 holds
( b2 in b1 iff ( c3 is Subspace of b2 & b2 is Subspace of c4 ) ) ) & ( c3 is not Subspace of c4 implies ex b1 being Subset of (Subspaces c2) st b1 = {} ) )
proof end;
uniqueness
for b1, b2 being Subset of (Subspaces c2) holds
( ( c3 is Subspace of c4 & ( for b3 being strict Subspace of c2 holds
( b3 in b1 iff ( c3 is Subspace of b3 & b3 is Subspace of c4 ) ) ) & ( for b3 being strict Subspace of c2 holds
( b3 in b2 iff ( c3 is Subspace of b3 & b3 is Subspace of c4 ) ) ) implies b1 = b2 ) & ( c3 is not Subspace of c4 & b1 = {} & b2 = {} implies b1 = b2 ) )
proof end;
end;

:: deftheorem Def1 defines segment PENCIL_4:def 1 :
for b1 being Field
for b2 being VectSp of b1
for b3, b4 being Subspace of b2
for b5 being Subset of (Subspaces b2) holds
( ( b3 is Subspace of b4 implies ( b5 = segment b3,b4 iff for b6 being strict Subspace of b2 holds
( b6 in b5 iff ( b3 is Subspace of b6 & b6 is Subspace of b4 ) ) ) ) & ( b3 is not Subspace of b4 implies ( b5 = segment b3,b4 iff b5 = {} ) ) );

theorem Th7: :: PENCIL_4:7
for b1 being Field
for b2 being VectSp of b1
for b3, b4, b5, b6 being Subspace of b2 st b3 is Subspace of b4 & b5 is Subspace of b6 & (Omega). b3 = (Omega). b5 & (Omega). b4 = (Omega). b6 holds
segment b3,b4 = segment b5,b6
proof end;

definition
let c1 be Field;
let c2 be VectSp of c1;
let c3, c4 be Subspace of c2;
func pencil c3,c4 -> Subset of (Subspaces a2) equals :: PENCIL_4:def 2
(segment a3,a4) \ {((Omega). a3),((Omega). a4)};
coherence
(segment c3,c4) \ {((Omega). c3),((Omega). c4)} is Subset of (Subspaces c2)
proof end;
end;

:: deftheorem Def2 defines pencil PENCIL_4:def 2 :
for b1 being Field
for b2 being VectSp of b1
for b3, b4 being Subspace of b2 holds pencil b3,b4 = (segment b3,b4) \ {((Omega). b3),((Omega). b4)};

theorem Th8: :: PENCIL_4:8
for b1 being Field
for b2 being VectSp of b1
for b3, b4, b5, b6 being Subspace of b2 st b3 is Subspace of b4 & b5 is Subspace of b6 & (Omega). b3 = (Omega). b5 & (Omega). b4 = (Omega). b6 holds
pencil b3,b4 = pencil b5,b6 by Th7;

definition
let c1 be Field;
let c2 be finite-dimensional VectSp of c1;
let c3, c4 be Subspace of c2;
let c5 be Nat;
func pencil c3,c4,c5 -> Subset of (a5 Subspaces_of a2) equals :: PENCIL_4:def 3
(pencil a3,a4) /\ (a5 Subspaces_of a2);
coherence
(pencil c3,c4) /\ (c5 Subspaces_of c2) is Subset of (c5 Subspaces_of c2)
by XBOOLE_1:17;
end;

:: deftheorem Def3 defines pencil PENCIL_4:def 3 :
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Subspace of b2
for b5 being Nat holds pencil b3,b4,b5 = (pencil b3,b4) /\ (b5 Subspaces_of b2);

theorem Th9: :: PENCIL_4:9
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat
for b4, b5, b6 being Subspace of b2 st b6 in pencil b4,b5,b3 holds
( b4 is Subspace of b6 & b6 is Subspace of b5 )
proof end;

theorem Th10: :: PENCIL_4:10
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat
for b4, b5, b6, b7 being Subspace of b2 st b4 is Subspace of b5 & b6 is Subspace of b7 & (Omega). b4 = (Omega). b6 & (Omega). b5 = (Omega). b7 holds
pencil b4,b5,b3 = pencil b6,b7,b3 by Th8;

definition
let c1 be Field;
let c2 be finite-dimensional VectSp of c1;
let c3 be Nat;
func c3 Pencils_of c2 -> Subset-Family of (a3 Subspaces_of a2) means :Def4: :: PENCIL_4:def 4
for b1 being set holds
( b1 in a4 iff ex b2, b3 being Subspace of a2 st
( b2 is Subspace of b3 & (dim b2) + 1 = a3 & dim b3 = a3 + 1 & b1 = pencil b2,b3,a3 ) );
existence
ex b1 being Subset-Family of (c3 Subspaces_of c2) st
for b2 being set holds
( b2 in b1 iff ex b3, b4 being Subspace of c2 st
( b3 is Subspace of b4 & (dim b3) + 1 = c3 & dim b4 = c3 + 1 & b2 = pencil b3,b4,c3 ) )
proof end;
uniqueness
for b1, b2 being Subset-Family of (c3 Subspaces_of c2) st ( for b3 being set holds
( b3 in b1 iff ex b4, b5 being Subspace of c2 st
( b4 is Subspace of b5 & (dim b4) + 1 = c3 & dim b5 = c3 + 1 & b3 = pencil b4,b5,c3 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4, b5 being Subspace of c2 st
( b4 is Subspace of b5 & (dim b4) + 1 = c3 & dim b5 = c3 + 1 & b3 = pencil b4,b5,c3 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines Pencils_of PENCIL_4:def 4 :
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat
for b4 being Subset-Family of (b3 Subspaces_of b2) holds
( b4 = b3 Pencils_of b2 iff for b5 being set holds
( b5 in b4 iff ex b6, b7 being Subspace of b2 st
( b6 is Subspace of b7 & (dim b6) + 1 = b3 & dim b7 = b3 + 1 & b5 = pencil b6,b7,b3 ) ) );

theorem Th11: :: PENCIL_4:11
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 holds
not b3 Pencils_of b2 is empty
proof end;

theorem Th12: :: PENCIL_4:12
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4, b5, b6 being Subspace of b2
for b7 being Nat st 1 <= b7 & b7 < dim b2 & (dim b3) + 1 = b7 & dim b4 = b7 + 1 & b5 in pencil b3,b4,b7 & b6 in pencil b3,b4,b7 & b5 <> b6 holds
( b5 /\ b6 = (Omega). b3 & b5 + b6 = (Omega). b4 )
proof end;

theorem Th13: :: PENCIL_4:13
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Vector of b2 st b3 <> 0. b2 holds
dim (Lin {b3}) = 1
proof end;

theorem Th14: :: PENCIL_4:14
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Subspace of b2
for b4 being Vector of b2 st not b4 in b3 holds
dim (b3 + (Lin {b4})) = (dim b3) + 1
proof end;

theorem Th15: :: PENCIL_4:15
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Subspace of b2
for b4, b5 being Vector of b2 st not b4 in b3 & not b5 in b3 & b4 <> b5 & {b4,b5} is linearly-independent & b3 /\ (Lin {b4,b5}) = (0). b2 holds
dim (b3 + (Lin {b4,b5})) = (dim b3) + 2
proof end;

theorem Th16: :: PENCIL_4:16
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Subspace of b2 st b3 is Subspace of b4 holds
for b5 being Nat st 1 <= b5 & b5 < dim b2 & (dim b3) + 1 = b5 & dim b4 = b5 + 1 holds
for b6 being Vector of b2 st b6 in b4 & not b6 in b3 holds
b3 + (Lin {b6}) in pencil b3,b4,b5
proof end;

theorem Th17: :: PENCIL_4:17
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Subspace of b2 st b3 is Subspace of b4 holds
for b5 being Nat st 1 <= b5 & b5 < dim b2 & (dim b3) + 1 = b5 & dim b4 = b5 + 1 holds
not pencil b3,b4,b5 is trivial
proof end;

definition
let c1 be Field;
let c2 be finite-dimensional VectSp of c1;
let c3 be Nat;
func PencilSpace c2,c3 -> strict TopStruct equals :: PENCIL_4:def 5
TopStruct(# (a3 Subspaces_of a2),(a3 Pencils_of a2) #);
coherence
TopStruct(# (c3 Subspaces_of c2),(c3 Pencils_of c2) #) is strict TopStruct
;
end;

:: deftheorem Def5 defines PencilSpace PENCIL_4:def 5 :
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat holds PencilSpace b2,b3 = TopStruct(# (b3 Subspaces_of b2),(b3 Pencils_of b2) #);

theorem Th18: :: PENCIL_4:18
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st b3 <= dim b2 holds
not PencilSpace b2,b3 is empty
proof end;

theorem Th19: :: PENCIL_4:19
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 holds
not PencilSpace b2,b3 is void
proof end;

theorem Th20: :: PENCIL_4:20
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 & 3 <= dim b2 holds
not PencilSpace b2,b3 is degenerated
proof end;

theorem Th21: :: PENCIL_4:21
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 holds
PencilSpace b2,b3 is with_non_trivial_blocks
proof end;

theorem Th22: :: PENCIL_4:22
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 holds
PencilSpace b2,b3 is identifying_close_blocks
proof end;

theorem Th23: :: PENCIL_4:23
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 < dim b2 & 3 <= dim b2 holds
PencilSpace b2,b3 is PLS by Th18, Th19, Th20, Th21, Th22;

definition
let c1 be Field;
let c2 be finite-dimensional VectSp of c1;
let c3, c4 be Nat;
func SubspaceSet c2,c3,c4 -> Subset-Family of (a3 Subspaces_of a2) means :Def6: :: PENCIL_4:def 6
for b1 being set holds
( b1 in a5 iff ex b2 being Subspace of a2 st
( dim b2 = a4 & b1 = a3 Subspaces_of b2 ) );
existence
ex b1 being Subset-Family of (c3 Subspaces_of c2) st
for b2 being set holds
( b2 in b1 iff ex b3 being Subspace of c2 st
( dim b3 = c4 & b2 = c3 Subspaces_of b3 ) )
proof end;
uniqueness
for b1, b2 being Subset-Family of (c3 Subspaces_of c2) st ( for b3 being set holds
( b3 in b1 iff ex b4 being Subspace of c2 st
( dim b4 = c4 & b3 = c3 Subspaces_of b4 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being Subspace of c2 st
( dim b4 = c4 & b3 = c3 Subspaces_of b4 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines SubspaceSet PENCIL_4:def 6 :
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat
for b5 being Subset-Family of (b3 Subspaces_of b2) holds
( b5 = SubspaceSet b2,b3,b4 iff for b6 being set holds
( b6 in b5 iff ex b7 being Subspace of b2 st
( dim b7 = b4 & b6 = b3 Subspaces_of b7 ) ) );

theorem Th24: :: PENCIL_4:24
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat st b4 <= dim b2 holds
not SubspaceSet b2,b3,b4 is empty
proof end;

theorem Th25: :: PENCIL_4:25
for b1 being Field
for b2, b3 being finite-dimensional VectSp of b1 st (Omega). b2 = (Omega). b3 holds
for b4 being Nat holds b4 Subspaces_of b2 = b4 Subspaces_of b3
proof end;

theorem Th26: :: PENCIL_4:26
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Subspace of b2
for b4 being Nat st 1 <= b4 & b4 <= dim b2 & b4 Subspaces_of b2 c= b4 Subspaces_of b3 holds
(Omega). b2 = (Omega). b3
proof end;

definition
let c1 be Field;
let c2 be finite-dimensional VectSp of c1;
let c3, c4 be Nat;
func GrassmannSpace c2,c3,c4 -> strict TopStruct equals :: PENCIL_4:def 7
TopStruct(# (a3 Subspaces_of a2),(SubspaceSet a2,a3,a4) #);
coherence
TopStruct(# (c3 Subspaces_of c2),(SubspaceSet c2,c3,c4) #) is strict TopStruct
;
end;

:: deftheorem Def7 defines GrassmannSpace PENCIL_4:def 7 :
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat holds GrassmannSpace b2,b3,b4 = TopStruct(# (b3 Subspaces_of b2),(SubspaceSet b2,b3,b4) #);

theorem Th27: :: PENCIL_4:27
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat st b3 <= dim b2 holds
not GrassmannSpace b2,b3,b4 is empty
proof end;

theorem Th28: :: PENCIL_4:28
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat st b4 <= dim b2 holds
not GrassmannSpace b2,b3,b4 is void
proof end;

theorem Th29: :: PENCIL_4:29
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat st 1 <= b3 & b3 < b4 & b4 < dim b2 holds
not GrassmannSpace b2,b3,b4 is degenerated
proof end;

theorem Th30: :: PENCIL_4:30
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3, b4 being Nat st 1 <= b3 & b3 < b4 & b4 <= dim b2 holds
GrassmannSpace b2,b3,b4 is with_non_trivial_blocks
proof end;

theorem Th31: :: PENCIL_4:31
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 + 1 <= dim b2 holds
GrassmannSpace b2,b3,(b3 + 1) is identifying_close_blocks
proof end;

theorem Th32: :: PENCIL_4:32
for b1 being Field
for b2 being finite-dimensional VectSp of b1
for b3 being Nat st 1 <= b3 & b3 + 1 < dim b2 holds
GrassmannSpace b2,b3,(b3 + 1) is PLS
proof end;

definition
let c1 be set ;
func PairSet c1 -> set means :Def8: :: PENCIL_4:def 8
for b1 being set holds
( b1 in a2 iff ex b2, b3 being set st
( b2 in a1 & b3 in a1 & b1 = {b2,b3} ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3, b4 being set st
( b3 in c1 & b4 in c1 & b2 = {b3,b4} ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4, b5 being set st
( b4 in c1 & b5 in c1 & b3 = {b4,b5} ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b4 in c1 & b5 in c1 & b3 = {b4,b5} ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines PairSet PENCIL_4:def 8 :
for b1 being set
for b2 being set holds
( b2 = PairSet b1 iff for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b4 in b1 & b5 in b1 & b3 = {b4,b5} ) ) );

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

definition
let c1, c2 be set ;
func PairSet c1,c2 -> set means :Def9: :: PENCIL_4:def 9
for b1 being set holds
( b1 in a3 iff ex b2 being set st
( b2 in a2 & b1 = {a1,b2} ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being set st
( b3 in c2 & b2 = {c1,b3} ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being set st
( b4 in c2 & b3 = {c1,b4} ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being set st
( b4 in c2 & b3 = {c1,b4} ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines PairSet PENCIL_4:def 9 :
for b1, b2 being set
for b3 being set holds
( b3 = PairSet b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being set st
( b5 in b2 & b4 = {b1,b5} ) ) );

registration
let c1 be set ;
let c2 be non empty set ;
cluster PairSet a1,a2 -> non empty ;
coherence
not PairSet c1,c2 is empty
proof end;
end;

registration
let c1 be set ;
let c2 be non trivial set ;
cluster PairSet a1,a2 -> non empty non trivial ;
coherence
not PairSet c1,c2 is trivial
proof end;
end;

definition
let c1 be set ;
let c2 be Subset-Family of c1;
func PairSetFamily c2 -> Subset-Family of (PairSet a1) means :Def10: :: PENCIL_4:def 10
for b1 being set holds
( b1 in a3 iff ex b2 being set ex b3 being Subset of a1 st
( b2 in a1 & b3 in a2 & b1 = PairSet b2,b3 ) );
existence
ex b1 being Subset-Family of (PairSet c1) st
for b2 being set holds
( b2 in b1 iff ex b3 being set ex b4 being Subset of c1 st
( b3 in c1 & b4 in c2 & b2 = PairSet b3,b4 ) )
proof end;
uniqueness
for b1, b2 being Subset-Family of (PairSet c1) st ( for b3 being set holds
( b3 in b1 iff ex b4 being set ex b5 being Subset of c1 st
( b4 in c1 & b5 in c2 & b3 = PairSet b4,b5 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being set ex b5 being Subset of c1 st
( b4 in c1 & b5 in c2 & b3 = PairSet b4,b5 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines PairSetFamily PENCIL_4:def 10 :
for b1 being set
for b2 being Subset-Family of b1
for b3 being Subset-Family of (PairSet b1) holds
( b3 = PairSetFamily b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being set ex b6 being Subset of b1 st
( b5 in b1 & b6 in b2 & b4 = PairSet b5,b6 ) ) );

registration
let c1 be non empty set ;
let c2 be non empty Subset-Family of c1;
cluster PairSetFamily a2 -> non empty ;
coherence
not PairSetFamily c2 is empty
proof end;
end;

definition
let c1 be TopStruct ;
func VeroneseSpace c1 -> strict TopStruct equals :: PENCIL_4:def 11
TopStruct(# (PairSet the carrier of a1),(PairSetFamily the topology of a1) #);
coherence
TopStruct(# (PairSet the carrier of c1),(PairSetFamily the topology of c1) #) is strict TopStruct
;
end;

:: deftheorem Def11 defines VeroneseSpace PENCIL_4:def 11 :
for b1 being TopStruct holds VeroneseSpace b1 = TopStruct(# (PairSet the carrier of b1),(PairSetFamily the topology of b1) #);

registration
let c1 be non empty TopStruct ;
cluster VeroneseSpace a1 -> non empty strict ;
coherence
not VeroneseSpace c1 is empty
proof end;
end;

registration
let c1 be non empty non void TopStruct ;
cluster VeroneseSpace a1 -> non empty strict non void ;
coherence
not VeroneseSpace c1 is void
proof end;
end;

registration
let c1 be non empty non void non degenerated TopStruct ;
cluster VeroneseSpace a1 -> non empty strict non void non degenerated ;
coherence
not VeroneseSpace c1 is degenerated
proof end;
end;

registration
let c1 be non empty non void with_non_trivial_blocks TopStruct ;
cluster VeroneseSpace a1 -> non empty strict non void with_non_trivial_blocks ;
coherence
VeroneseSpace c1 is with_non_trivial_blocks
proof end;
end;

registration
let c1 be identifying_close_blocks TopStruct ;
cluster VeroneseSpace a1 -> strict identifying_close_blocks ;
coherence
VeroneseSpace c1 is identifying_close_blocks
proof end;
end;

definition
let c1 be PLS;
redefine func VeroneseSpace as VeroneseSpace c1 -> strict PLS;
coherence
VeroneseSpace c1 is strict PLS
;
end;