Axiom
  point_aligne :
    forall A B C : PO,
    colineaire (vec A B) (vec C B) -> colineaire (vec A B) (vec A C).

(* Specifications: *)
Lemma existence_mediatrice_base_isocele : forall A B C D : PO, isocele A B C -> isocele D B C -> bissectrice D A B C /\ bissectrice A D B C.
Lemma concours_3circonscrits : forall A B C P Q T O1 O2 I : PO, circonscrit T A B O1 -> circonscrit I A B O1 -> circonscrit Q A C O2 -> circonscrit I A C O2 -> ~ colineaire (vec P B) (vec P C) -> R (plus (cons (vec P C) (vec P B)) (plus (cons (vec T B) (vec T A)) (cons (vec Q A) (vec Q C)))) pi -> sont_cocycliques P B C I.
Lemma circonscrit_3centres : forall A B C O1 O2 O3 I : PO, circonscrit I A B O1 -> circonscrit I A C O2 -> circonscrit I B C O3 -> R (double (cons (vec O1 O2) (vec O1 O3))) (double (cons (vec I A) (vec I B))) /\ R (double (cons (vec O1 O3) (vec O2 O3))) (double (cons (vec I B) (vec I C))) /\ R (double (cons (vec O1 O2) (vec O2 O3))) (double (cons (vec I A) (vec I C))).
Theorem general_Napoleon : forall A B C P0 Q T O1 O2 I : PO, circonscrit T A B O1 -> circonscrit I A B O1 -> circonscrit Q A C O2 -> circonscrit I A C O2 -> ~ colineaire (vec P0 B) (vec P0 C) -> R (plus (cons (vec P0 C) (vec P0 B)) (plus (cons (vec T B) (vec T A)) (cons (vec Q A) (vec Q C)))) pi -> exists O3 : PO, R (double (cons (vec O1 O2) (vec O1 O3))) (double (cons (vec T A) (vec T B))) /\ R (double (cons (vec O1 O3) (vec O2 O3))) (double (cons (vec P0 B) (vec P0 C))) /\ R (double (cons (vec O1 O2) (vec O2 O3))) (double (cons (vec Q A) (vec Q C))).