Library GeoCoq.Axioms.euclidean_axioms

The following axiom systems are used to formalize Euclid's proofs of Euclid's Elements.OriginalProofs.statements.
First, we define an axiom system for neutral geometry, i.e. geometry without continuity axioms nor parallel postulate.

Class euclidean_neutral :=
{
  Point : Type;
  Circle : Type;
  Cong : Point Point Point Point Prop;
  BetS : Point Point Point Prop;
  InCirc : Point Circle Prop;
  OnCirc : Point Circle Prop;
  OutCirc : Point Circle Prop;
  PA : Point;
  PB : Point;
  PC : Point;
  CI : Circle Point Point Point Prop;
  eq := @eq Point;
  neq A B := ¬ eq A B;
  TE A B C := ¬ (neq A B neq B C ¬ BetS A B C);
  nCol A B C := neq A B neq A C neq B C ¬ BetS A B C ¬ BetS A C B ¬ BetS B A C;
  Col A B C := (eq A B eq A C eq B C BetS B A C BetS A B C BetS A C B);
  Cong_3 A B C a b c := Cong A B a b Cong B C b c Cong A C a c;
  TS P A B Q := X, BetS P X Q Col A B X nCol A B P;
  Triangle A B C := nCol A B C;

  cn_equalitytransitive :
    A B C, eq A C eq B C eq A B;
  cn_congruencetransitive :
    B C D E P Q, Cong P Q B C Cong P Q D E Cong B C D E;
  cn_equalityreflexive :
    A, eq A A;
  cn_congruencereflexive :
    A B, Cong A B A B;
  cn_equalityreverse :
    A B, Cong A B B A;
  cn_stability :
    A B, ¬ neq A B eq A B;
  cn_equalitysub :
    A B C D, eq D A BetS A B C BetS D B C;
  circle : A B C, neq A B X, CI X C A B;
  inside : A B C J P, CI J C A B InCirc P J X Y, CI J C A B BetS X C Y Cong C Y A B Cong C X A B BetS X P Y;
  outside : A B C J P, CI J C A B OutCirc P J X, CI J C A B BetS C X P Cong C X A B;
  on : A B C D J, CI J A C D OnCirc B J CI J A C D Cong A B C D;
  axiom_lower_dim : nCol PA PB PC;
  axiom_betweennessidentity :
    A B, ¬ BetS A B A;
  axiom_betweennesssymmetry :
    A B C, BetS A B C BetS C B A;
  axiom_innertransitivity :
    A B C D,
    BetS A B D BetS B C D BetS A B C;
  axiom_connectivity :
    A B C D,
    BetS A B D BetS A C D ¬ BetS A B C ¬ BetS A C B
    eq B C;
  axiom_nullsegment1 :
    A B C, Cong A B C C eq A B;
  axiom_nullsegment2 :
    A B, Cong A A B B;
  axiom_5_line :
    A B C D a b c d,
    Cong B C b c Cong A D a d Cong B D b d
    BetS A B C BetS a b c Cong A B a b
    Cong D C d c;
  postulate_extension :
    A B C D,
    neq A B neq C D
     X, BetS A B X Cong B X C D;
  postulate_extension2 :
    A B C D,
    neq A B
     X, TE A B X Cong B X C D;
  postulate_Pasch_inner :
    A B C P Q,
    BetS A P C BetS B Q C nCol A C B
     X, BetS A X Q BetS B X P;
  postulate_Pasch_outer :
    A B C P Q,
    BetS A P C BetS B C Q nCol B Q A
     X, BetS A X Q BetS B P X;
}.

Second, we enrich the axiom system with line-circle and circle-circle continuity axioms. Those two axioms states that we allow ruler and compass constructions.

Class euclidean_neutral_ruler_compass `(Ax : euclidean_neutral) :=
{
  postulate_line_circle :
    A B C K P Q,
    CI K C P Q InCirc B K neq A B
     X Y, Col A B X Col A B Y OnCirc X K OnCirc Y K BetS X B Y;
  postulate_circle_circle :
    C D F G J K P Q R S,
    CI J C R S InCirc P J
    OutCirc Q J CI K D F G
    OnCirc P K OnCirc Q K
     X, OnCirc X J OnCirc X K
}.

Third, we introduce the famous fifth postulate of Euclid, which ensure that the geometry is Euclidean (i.e. not hyperbolic).

Class euclidean_euclidean `(Ax : euclidean_neutral_ruler_compass) :=
{
  postulate_Euclid5 :
    a p q r s t,
    BetS r t s BetS p t q BetS r a q
    Cong p t q t Cong t r t s nCol p q s
     X, BetS p a X BetS s q X
}.

Last, we enrich the axiom system with axioms for equality of areas.

Class area `(Ax : euclidean_euclidean) :=
{
  EF : Point Point Point Point Point Point Point Point Prop;
  ET : Point Point Point Point Point Point Prop;
  axiom_EFreflexive :
    A B C D, EF A B C D A B C D;
  axiom_ETreflexive :
    A B C, ET A B C A B C;
  axiom_congruentequal :
    A B C a b c, Cong_3 A B C a b c ET A B C a b c;
  axiom_ETpermutation :
    A B C a b c,
    ET A B C a b c
    ET A B C b c a
    ET A B C a c b
    ET A B C b a c
    ET A B C c b a
    ET A B C c a b;
  axiom_ETsymmetric :
    A B C a b c, ET A B C a b c ET a b c A B C;
  axiom_EFpermutation :
    A B C D a b c d,
   EF A B C D a b c d
     EF A B C D b c d a
     EF A B C D d c b a
     EF A B C D c d a b
     EF A B C D b a d c
     EF A B C D d a b c
     EF A B C D c b a d
     EF A B C D a d c b;
  axiom_halvesofequals :
    A B C D a b c d, ET A B C B C D
                           TS A B C D ET a b c b c d
                           TS a b c d EF A B D C a b d c ET A B C a b c;
  axiom_EFsymmetric :
    A B C D a b c d, EF A B C D a b c d
                           EF a b c d A B C D;
  axiom_EFtransitive :
    A B C D P Q R S a b c d,
     EF A B C D a b c d EF a b c d P Q R S
     EF A B C D P Q R S;
  axiom_ETtransitive :
    A B C P Q R a b c,
    ET A B C a b c ET a b c P Q R ET A B C P Q R;
  axiom_cutoff1 :
    A B C D E a b c d e,
    BetS A B C BetS a b c BetS E D C BetS e d c
    ET B C D b c d ET A C E a c e
    EF A B D E a b d e;
  axiom_cutoff2 :
    A B C D E a b c d e,
    BetS B C D BetS b c d ET C D E c d e EF A B D E a b d e
    EF A B C E a b c e;
  axiom_paste1 :
    A B C D E a b c d e,
    BetS A B C BetS a b c BetS E D C BetS e d c
    ET B C D b c d EF A B D E a b d e
    ET A C E a c e;
  axiom_deZolt1 :
    B C D E, BetS B E D ¬ ET D B C E B C;
  axiom_deZolt2 :
    A B C E F,
    Triangle A B C BetS B E A BetS B F C
  ¬ ET A B C E B F;
  axiom_paste2 :
    A B C D E a b c d e,
    BetS B C D BetS b c d ET C D E c d e
    EF A B C E a b c e EF A B D E a b d e;
  axiom_paste3 :
    A B C D a b c d,
    ET A B C a b c ET A B D a b d
    TS C A B D TS c a b d
    EF A C B D a c b d;
  axiom_paste4 :
    A B C D F G H K L M e m,
    EF A B m D F K H G EF D B e C G H M L
    TS A B D C BetS K H M BetS F G L BetS B m D BetS B e C
    EF A B C D F K M L;
  axiom_paste5 :
    B C D E L M b c d e l m,
    EF B M L D b m l d EF M C E L m c e l
    BetS B M C BetS b m c BetS E L D BetS e l d
    EF B C E D b c e d;
}.