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

89 lines
3.4 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.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