We present a formalization of Projective Geometry in the proof assistant and programming language Agda. We formalize a recent development on constructive Projective Geometry which has been showed appropriate to cover most traditional topics in the area applying only constructively valid methods. In addition, the equivalence with other well-known constructive axiomatic systems for projective geometry is proved and formalized. The implementation covers a basic fragment of intuitionistic synthetic Projective Plane Geometry including the axioms, principle of duality, Fano and Desargues properties and harmonic conjugates. We describe as an illustrative example, the implementation of a complex and large proof which appears partially and vaguely described in the literature; namely the uniqueness of the harmonic conjugate. The most important details of our implementation are described and we show how to take advantage of several interesting properties of Agda such as modules, dependent record types, implicit arguments and instances which result very helpful to reduce the typical verbosity of formal proofs.
This repository provides the Agda code relative to the paper Formalizing Constructive Projective Geometry in Agda
This code was compiled with:
- Agda version 2.6.0
- Standard library 0.14
April 2017
In this section, we provide links to the most important definitions, lemmas, propositions and theoremes in the formalization:
- Apartness Relation
- Setoids
- Projective plane (a la Mandelkern)
- Complete n-point
- Triangle
- Quadrangle
- Perspective triangles wrt a center
- Perspective triangles wrt an axis
- Desarguesian plane
- Fanoian plane
- Dual projective plane
- Harmonic configuration
- Harmonic conjugate
- van Dalen's projective plane
- von Plato's appartness geometry
- von Plato's projective plane