Files
elementarGeometrie/ElementarGeometrie/Projective/Completion.lean
T
Stefan Kebekus b20e936d11
Lean Action CI / build (push) Has been cancelled
Working
2026-06-24 13:46:07 +02:00

61 lines
2.3 KiB
Lean4
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/-
Copyright (c) 2026 Stefan Kebekus. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stefan Kebekus
-/
import Mathlib.LinearAlgebra.AffineSpace.FiniteDimensional
import ElementarGeometrie.Projective.Space
/-!
# Projective completion of an affine space
Following Soergel's notes, the **projective completion** of an affine space `E`
over a field `K`, with direction space `V`, is the incidence geometry on the
disjoint union `E ⊕ K V`. Its lines are of two kinds:
* an affine line `g ⊆ E` together with its *point at infinity*, the point of
` K V` given by the direction of `g`;
* the projective lines of ` K V`.
The points coming from ` K V` are the **points at infinity**. When `E` is a
plane, the projective lines of ` K V` reduce to a single **line at infinity**.
## Main definitions
* `IncidenceGeometry.completionLines` : the system of lines of the completion.
* `IncidenceGeometry.projectiveCompletion` : the completion as incidence geometry.
* `IncidenceGeometry.pointsAtInfinity` : the points at infinity.
-/
universe u
open scoped LinearAlgebra.Projectivization
namespace IncidenceGeometry
variable (K V E : Type u) [Field K] [AddCommGroup V] [Module K V] [AddTorsor V E]
/-- The system of lines of the projective completion `E ⊕ K V`:
* for every one-dimensional affine subspace `s ⊆ E`, the union of `s` (embedded on
the left) with its point at infinity `⟨direction s⟩` (embedded on the right);
* for every projective line `g` of ` K V`, its image on the right. -/
def completionLines : Set (Set (E K V)) :=
{L |
( (s : AffineSubspace K E) (h : Module.finrank K s.direction = 1),
L = Sum.inl '' (s : Set E) {Sum.inr (Projectivization.mk'' s.direction h)})
( g projectiveLines K V, L = Sum.inr '' g)}
/-- The **projective completion** of the affine space `E` as an incidence
geometry on `E ⊕ K V`. -/
noncomputable def projectiveCompletion : IncidenceGeometry (E K V) where
lines := completionLines K V E
two_points := by sorry
unique_line := by sorry
/-- The **points at infinity** of the projective completion: the points coming
from ` K V`. -/
def pointsAtInfinity : Set (E K V) := Set.range Sum.inr
end IncidenceGeometry