unfold circonscrit in |- *; intros A B C P Q T O O' I H H0 H1 H2 H3 H4.
apply reciproque_cocyclique; auto.
apply symetrique.
apply
transitive
with (double (plus (cons (vec I B) (vec I A)) (cons (vec I A) (vec I C))));
auto.
apply
transitive
with (double (plus (cons (vec T B) (vec T A)) (cons (vec Q A) (vec Q C))));
auto.
apply
regulier
with
(a := double (cons (vec P C) (vec P B)))
(c := double (cons (vec P C) (vec P B))); auto.
apply
transitive
with (double (plus (cons (vec P C) (vec P B)) (cons (vec P B) (vec P C))));
auto.
apply transitive with (double (cons (vec P C) (vec P C))); auto.
apply transitive with (double zero); auto.
apply
transitive
with
(double
(plus (cons (vec P C) (vec P B))
(plus (cons (vec T B) (vec T A)) (cons (vec Q A) (vec Q C)))));
auto.
apply transitive with (double pi); auto.
apply transitive with zero; auto.
apply
transitive
with
(plus (double (cons (vec T B) (vec T A)))
(double (cons (vec Q A) (vec Q C)))); auto.
apply
transitive
with
(plus (double (cons (vec I B) (vec I A)))
(double (cons (vec I A) (vec I C)))); auto.
apply compatible.
apply cocyclique with O.
elim H0; intros H5 H6; clear H0; auto.
elim H0; intros H5 H6; elim H6; intros H7 H8; clear H6 H0; auto.
elim H0; intros H5 H6; elim H6; intros H7 H8; clear H6 H0; auto.
elim H; intros H5 H6; elim H6; intros H7 H8; clear H6 H; auto.
elim H; intros H5 H6; elim H6; intros H7 H8; clear H6 H; auto.
apply cocyclique with O'.
elim H2; intros H5 H6; clear H2; try exact H5.
elim H2; intros H5 H6; elim H6; intros H7 H8; clear H6 H2; auto.
elim H2; intros H5 H6; elim H6; intros H7 H8; clear H6 H2; auto.
elim H1; intros H5 H6; elim H6; intros H7 H8; clear H6 H1; auto.
elim H1; intros H5 H6; elim H6; intros H7 H8; clear H6 H1; auto.
Qed.

(* Specifications: *)
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))).