89 lines
3.4 KiB
Lean4
89 lines
3.4 KiB
Lean4
/-
|
||
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.Dual.Defs
|
||
import ElementarGeometrie.Projective.Space
|
||
|
||
/-!
|
||
# Incidence structures and point-line duality
|
||
|
||
Following Soergel's notes, an **incidence structure** is a datum `(X, G, I)`
|
||
consisting of two sets `X` (points) and `G` (lines) together with an *incidence
|
||
relation* `I ⊆ X × G`. We model `I` as a relation `incident : X → G → Prop`.
|
||
|
||
Every incidence geometry gives rise to an incidence structure, and every incidence
|
||
structure has a *dual*, obtained by exchanging the roles of points and lines. The
|
||
central result is the **point-line duality** for a three-dimensional vector space:
|
||
the incidence structure of `ℙ(V*)` is isomorphic to the dual of the incidence
|
||
structure of `ℙ(V)`.
|
||
|
||
## Main definitions
|
||
|
||
* `IncidenceStructure` : two sets with an incidence relation.
|
||
* `IncidenceStructure.Dual` : the dual incidence structure.
|
||
* `IncidenceStructure.Isomorphic` : isomorphism of incidence structures.
|
||
* `IncidenceGeometry.toIncidenceStructure` : the incidence structure of a geometry.
|
||
-/
|
||
|
||
universe u v w
|
||
|
||
/-- An **incidence structure** consists of a type of points `P`, a type of lines
|
||
`L`, and an incidence relation between them. -/
|
||
structure IncidenceStructure (P : Type u) (L : Type v) where
|
||
/-- The incidence relation: `incident x g` means "`x` lies on `g`". -/
|
||
incident : P → L → Prop
|
||
|
||
namespace IncidenceStructure
|
||
|
||
variable {P : Type u} {L : Type v} {P' : Type*} {L' : Type*}
|
||
|
||
/-- The **dual** incidence structure, with the roles of points and lines
|
||
exchanged. -/
|
||
def Dual (S : IncidenceStructure P L) : IncidenceStructure L P where
|
||
incident g x := S.incident x g
|
||
|
||
@[simp]
|
||
theorem dual_incident (S : IncidenceStructure P L) (g : L) (x : P) :
|
||
S.Dual.incident g x ↔ S.incident x g := Iff.rfl
|
||
|
||
@[simp]
|
||
theorem dual_dual (S : IncidenceStructure P L) : S.Dual.Dual = S := rfl
|
||
|
||
/-- A pair of bijections `(φ, ψ)` is an **isomorphism of incidence structures** if
|
||
it preserves the incidence relation. -/
|
||
def IsIso (S : IncidenceStructure P L) (S' : IncidenceStructure P' L')
|
||
(φ : P ≃ P') (ψ : L ≃ L') : Prop :=
|
||
∀ x g, S.incident x g ↔ S'.incident (φ x) (ψ g)
|
||
|
||
/-- Two incidence structures are **isomorphic** if there is an isomorphism between
|
||
them. -/
|
||
def Isomorphic (S : IncidenceStructure P L) (S' : IncidenceStructure P' L') : Prop :=
|
||
∃ (φ : P ≃ P') (ψ : L ≃ L'), IsIso S S' φ ψ
|
||
|
||
end IncidenceStructure
|
||
|
||
namespace IncidenceGeometry
|
||
|
||
variable {X : Type u}
|
||
|
||
/-- The incidence structure associated with an incidence geometry: points are the
|
||
points of `X`, lines are the lines of `G`, and incidence is set membership. -/
|
||
def toIncidenceStructure (G : IncidenceGeometry X) :
|
||
IncidenceStructure X {g : Set X // g ∈ G.lines} where
|
||
incident x g := x ∈ g.val
|
||
|
||
open scoped LinearAlgebra.Projectivization
|
||
|
||
/-- **Point-line duality.** For a three-dimensional vector space `V` over a field
|
||
`K`, the incidence structure of the projective plane `ℙ(V*)` is isomorphic to the
|
||
dual of the incidence structure of `ℙ(V)`. -/
|
||
theorem isomorphic_dual_projectivization (K V : Type u) [Field K] [AddCommGroup V]
|
||
[Module K V] (h : Module.finrank K V = 3) :
|
||
(toIncidenceStructure (projectivization K (Module.Dual K V))).Isomorphic
|
||
(toIncidenceStructure (projectivization K V)).Dual := by
|
||
sorry
|
||
|
||
end IncidenceGeometry
|