File: Mathlib/LinearAlgebra/Projectivization/Subspace.lean

full_name: Projectivization.Subspace
code: /-- A subspace of a projective space is a structure consisting of a set of points such that:
If two nonzero vectors determine points which are in the set, and the sum of the two vectors is
nonzero, then the point determined by the sum is also in the set. -/
@[ext]
structure Subspace where
  /-- The set of points. -/
  carrier : Set (ℙ K V)
  /-- The addition rule. -/
  mem_add' (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
    mk K v hv ∈ carrier → mk K w hw ∈ carrier → mk K (v + w) hvw ∈ carrier
goal: Type u_2

full_name: Projectivization.Subspace.mem_add'
code: /-- A subspace of a projective space is a structure consisting of a set of points such that:
If two nonzero vectors determine points which are in the set, and the sum of the two vectors is
nonzero, then the point determined by the sum is also in the set. -/
@[ext]
structure Subspace where
  /-- The set of points. -/
  carrier : Set (ℙ K V)
  /-- The addition rule. -/
  mem_add' (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
    mk K v hv ∈ carrier → mk K w hw ∈ carrier → mk K (v + w) hvw ∈ carrier
goal: Projectivization.mk K v hv ∈ self.carrier →
  Projectivization.mk K w hw ∈ self.carrier → Projectivization.mk K (v + w) hvw ∈ self.carrier

full_name: Projectivization.Subspace.carrier
code: /-- A subspace of a projective space is a structure consisting of a set of points such that:
If two nonzero vectors determine points which are in the set, and the sum of the two vectors is
nonzero, then the point determined by the sum is also in the set. -/
@[ext]
structure Subspace where
  /-- The set of points. -/
  carrier : Set (ℙ K V)
  /-- The addition rule. -/
  mem_add' (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
    mk K v hv ∈ carrier → mk K w hw ∈ carrier → mk K (v + w) hvw ∈ carrier
goal: Set (Projectivization K V)

full_name: Projectivization.Subspace.instSetLike
code: instance : SetLike (Subspace K V) (ℙ K V) 
goal: SetLike (Projectivization.Subspace K V) (Projectivization K V)

full_name: Projectivization.Subspace.mem_carrier_iff
code: @[simp]
theorem mem_carrier_iff (A : Subspace K V) (x : ℙ K V) : x ∈ A.carrier ↔ x ∈ A 
goal: x ∈ A.carrier ↔ x ∈ A

full_name: Projectivization.Subspace.mem_add
code: theorem mem_add (T : Subspace K V) (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
    Projectivization.mk K v hv ∈ T →
      Projectivization.mk K w hw ∈ T → Projectivization.mk K (v + w) hvw ∈ T 
goal: Projectivization.mk K v hv ∈ T → Projectivization.mk K w hw ∈ T → Projectivization.mk K (v + w) hvw ∈ T

full_name: Projectivization.Subspace.spanCarrier.mem_add
code: /-- The span of a set of points in a projective space is defined inductively to be the set of points
which contains the original set, and contains all points determined by the (nonzero) sum of two
nonzero vectors, each of which determine points in the span. -/
inductive spanCarrier (S : Set (ℙ K V)) : Set (ℙ K V)
  | of (x : ℙ K V) (hx : x ∈ S) : spanCarrier S x
  | mem_add (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
      spanCarrier S (Projectivization.mk K v hv) →
      spanCarrier S (Projectivization.mk K w hw) → spanCarrier S (Projectivization.mk K (v + w) hvw)
goal: Projectivization.Subspace.spanCarrier S (Projectivization.mk K v hv) →
  Projectivization.Subspace.spanCarrier S (Projectivization.mk K w hw) →
    Projectivization.Subspace.spanCarrier S (Projectivization.mk K (v + w) hvw)

full_name: Projectivization.Subspace.spanCarrier.of
code: /-- The span of a set of points in a projective space is defined inductively to be the set of points
which contains the original set, and contains all points determined by the (nonzero) sum of two
nonzero vectors, each of which determine points in the span. -/
inductive spanCarrier (S : Set (ℙ K V)) : Set (ℙ K V)
  | of (x : ℙ K V) (hx : x ∈ S) : spanCarrier S x
  | mem_add (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
      spanCarrier S (Projectivization.mk K v hv) →
      spanCarrier S (Projectivization.mk K w hw) → spanCarrier S (Projectivization.mk K (v + w) hvw)
goal: Projectivization.Subspace.spanCarrier S x

full_name: Projectivization.Subspace.spanCarrier
code: /-- The span of a set of points in a projective space is defined inductively to be the set of points
which contains the original set, and contains all points determined by the (nonzero) sum of two
nonzero vectors, each of which determine points in the span. -/
inductive spanCarrier (S : Set (ℙ K V)) : Set (ℙ K V)
  | of (x : ℙ K V) (hx : x ∈ S) : spanCarrier S x
  | mem_add (v w : V) (hv : v ≠ 0) (hw : w ≠ 0) (hvw : v + w ≠ 0) :
      spanCarrier S (Projectivization.mk K v hv) →
      spanCarrier S (Projectivization.mk K w hw) → spanCarrier S (Projectivization.mk K (v + w) hvw)
goal: Set (Projectivization K V)

full_name: Projectivization.Subspace.span
code: /-- The span of a set of points in projective space is a subspace. -/
def span (S : Set (ℙ K V)) : Subspace K V 
goal: Projectivization.Subspace K V

full_name: Projectivization.Subspace.subset_span
code: /-- The span of a set of points contains the set of points. -/
theorem subset_span (S : Set (ℙ K V)) : S ⊆ span S 
goal: S ⊆ ↑(Projectivization.Subspace.span S)

full_name: Projectivization.Subspace.gi
code: /-- The span of a set of points is a Galois insertion between sets of points of a projective space
and subspaces of the projective space. -/
def gi : GaloisInsertion (span : Set (ℙ K V) → Subspace K V) SetLike.coe 
goal: GaloisInsertion Projectivization.Subspace.span SetLike.coe

full_name: Projectivization.Subspace.span_coe
code: /-- The span of a subspace is the subspace. -/
@[simp]
theorem span_coe (W : Subspace K V) : span ↑W = W 
goal: Projectivization.Subspace.span ↑W = W

full_name: Projectivization.Subspace.instInf
code: /-- The infimum of two subspaces exists. -/
instance instInf : Inf (Subspace K V) 
goal: Inf (Projectivization.Subspace K V)

full_name: Projectivization.Subspace.instInfSet
code: /-- Infimums of arbitrary collections of subspaces exist. -/
instance instInfSet : InfSet (Subspace K V) 
goal: InfSet (Projectivization.Subspace K V)

full_name: Projectivization.Subspace.instCompleteLattice
code: /-- The subspaces of a projective space form a complete lattice. -/
instance : CompleteLattice (Subspace K V) 
goal: CompleteLattice (Projectivization.Subspace K V)

full_name: Projectivization.Subspace.subspaceInhabited
code: instance subspaceInhabited : Inhabited (Subspace K V) 
goal: Inhabited (Projectivization.Subspace K V)

full_name: Projectivization.Subspace.span_empty
code: /-- The span of the empty set is the bottom of the lattice of subspaces. -/
@[simp]
theorem span_empty : span (∅ : Set (ℙ K V)) = ⊥ 
goal: Projectivization.Subspace.span ∅ = ⊥

full_name: Projectivization.Subspace.span_univ
code: /-- The span of the entire projective space is the top of the lattice of subspaces. -/
@[simp]
theorem span_univ : span (Set.univ : Set (ℙ K V)) = ⊤ 
goal: Projectivization.Subspace.span Set.univ = ⊤

full_name: Projectivization.Subspace.span_le_subspace_iff
code: /-- The span of a set of points is contained in a subspace if and only if the set of points is
contained in the subspace. -/
theorem span_le_subspace_iff {S : Set (ℙ K V)} {W : Subspace K V} : span S ≤ W ↔ S ⊆ W 
goal: Projectivization.Subspace.span S ≤ W ↔ S ⊆ ↑W

full_name: Projectivization.Subspace.monotone_span
code: /-- If a set of points is a subset of another set of points, then its span will be contained in the
span of that set. -/
@[mono]
theorem monotone_span : Monotone (span : Set (ℙ K V) → Subspace K V) 
goal: Monotone Projectivization.Subspace.span

full_name: Projectivization.Subspace.subset_span_trans
code: theorem subset_span_trans {S T U : Set (ℙ K V)} (hST : S ⊆ span T) (hTU : T ⊆ span U) :
    S ⊆ span U 
goal: S ⊆ ↑(Projectivization.Subspace.span U)

full_name: Projectivization.Subspace.span_union
code: /-- The supremum of two subspaces is equal to the span of their union. -/
theorem span_union (S T : Set (ℙ K V)) : span (S ∪ T) = span S ⊔ span T 
goal: Projectivization.Subspace.span (S ∪ T) = Projectivization.Subspace.span S ⊔ Projectivization.Subspace.span T

full_name: Projectivization.Subspace.span_iUnion
code: /-- The supremum of a collection of subspaces is equal to the span of the union of the
collection. -/
theorem span_iUnion {ι} (s : ι → Set (ℙ K V)) : span (⋃ i, s i) = ⨆ i, span (s i) 
goal: Projectivization.Subspace.span (⋃ i, s i) = ⨆ i, Projectivization.Subspace.span (s i)

full_name: Projectivization.Subspace.sup_span
code: /-- The supremum of a subspace and the span of a set of points is equal to the span of the union of
the subspace and the set of points. -/
theorem sup_span {S : Set (ℙ K V)} {W : Subspace K V} : W ⊔ span S = span (W ∪ S) 
goal: W ⊔ Projectivization.Subspace.span S = Projectivization.Subspace.span (↑W ∪ S)

full_name: Projectivization.Subspace.span_sup
code: theorem span_sup {S : Set (ℙ K V)} {W : Subspace K V} : span S ⊔ W = span (S ∪ W) 
goal: Projectivization.Subspace.span S ⊔ W = Projectivization.Subspace.span (S ∪ ↑W)

full_name: Projectivization.Subspace.mem_span
code: /-- A point in a projective space is contained in the span of a set of points if and only if the
point is contained in all subspaces of the projective space which contain the set of points. -/
theorem mem_span {S : Set (ℙ K V)} (u : ℙ K V) :
    u ∈ span S ↔ ∀ W : Subspace K V, S ⊆ W → u ∈ W 
goal: u ∈ Projectivization.Subspace.span S ↔ ∀ (W : Projectivization.Subspace K V), S ⊆ ↑W → u ∈ W

full_name: Projectivization.Subspace.span_eq_sInf
code: /-- The span of a set of points in a projective space is equal to the infimum of the collection of
subspaces which contain the set. -/
theorem span_eq_sInf {S : Set (ℙ K V)} : span S = sInf { W : Subspace K V| S ⊆ W } 
goal: Projectivization.Subspace.span S = sInf {W | S ⊆ ↑W}

full_name: Projectivization.Subspace.span_eq_of_le
code: /-- If a set of points in projective space is contained in a subspace, and that subspace is
contained in the span of the set of points, then the span of the set of points is equal to
the subspace. -/
theorem span_eq_of_le {S : Set (ℙ K V)} {W : Subspace K V} (hS : S ⊆ W) (hW : W ≤ span S) :
    span S = W 
goal: Projectivization.Subspace.span S = W

full_name: Projectivization.Subspace.span_eq_span_iff
code: /-- The spans of two sets of points in a projective space are equal if and only if each set of
points is contained in the span of the other set. -/
theorem span_eq_span_iff {S T : Set (ℙ K V)} : span S = span T ↔ S ⊆ span T ∧ T ⊆ span S 
goal: Projectivization.Subspace.span S = Projectivization.Subspace.span T ↔
  S ⊆ ↑(Projectivization.Subspace.span T) ∧ T ⊆ ↑(Projectivization.Subspace.span S)