Set Implicit Arguments.
Unset Strict Implicit.
Require Export point_angle.
intros a b c d; try assumption.
apply transitive with (plus (plus (plus a b) c) d); auto.
apply transitive with (plus (plus (plus a c) b) d); auto.
apply compatible; auto.
apply transitive with (plus a (plus b c)); auto.
apply transitive with (plus a (plus c b)); auto.
apply compatible; auto.
Qed.
intros A B M O H H0; try assumption.
unfold double in |- *.
lapply (triangle_isocele (A:=O) (B:=M) (C:=B)); intros.
lapply (isocele_permute (A:=O) (B:=M) (C:=A)); intros.
cut
(R
(plus (cons (vec O A) (vec O B))
(plus (cons (vec M B) (vec M A)) (cons (vec M B) (vec M A))))
(plus pi pi)).
intros.
apply
transitive
with
(plus
(plus (cons (vec O A) (vec O B))
(plus (cons (vec M B) (vec M A)) (cons (vec M B) (vec M A))))
(plus (cons (vec M A) (vec M B)) (cons (vec M A) (vec M B)))).
apply
transitive
with
(plus zero (plus (cons (vec M A) (vec M B)) (cons (vec M A) (vec M B)))).
apply symetrique.
apply zero_plus_a.
apply
transitive
with
(plus (plus pi pi)
(plus (cons (vec M A) (vec M B)) (cons (vec M A) (vec M B)))).
apply compatible.
apply symetrique.
apply pi_plus_pi.
apply reflexive.
apply
transitive
with
(plus (plus pi pi)
(plus (cons (vec M A) (vec M B)) (cons (vec M A) (vec M B)))).
apply compatible.
apply reflexive.
apply reflexive.
apply compatible.
apply symetrique.
try exact H3.
apply reflexive.
apply
transitive
with
(plus (cons (vec O A) (vec O B))
(plus (plus (cons (vec M B) (vec M A)) (cons (vec M B) (vec M A)))
(plus (cons (vec M A) (vec M B)) (cons (vec M A) (vec M B))))).
apply symetrique.
apply point_angle.plus_assoc.
apply transitive with (plus (cons (vec O A) (vec O B)) zero).
apply compatible.
apply reflexive.
apply
transitive
with
(plus (plus (cons (vec M B) (vec M A)) (cons (vec M A) (vec M B)))
(plus (cons (vec M B) (vec M A)) (cons (vec M A) (vec M B)))).
apply calcul4.
apply transitive with (plus zero zero).
apply compatible.
apply permute.
apply permute.
apply zero_plus_a.
apply plus_zero.
apply
transitive
with
(plus (plus (cons (vec O A) (vec O M)) (cons (vec O M) (vec O B)))
(plus (plus (cons (vec M O) (vec M A)) (cons (vec M B) (vec M O)))
(plus (cons (vec M O) (vec M A)) (cons (vec M B) (vec M O))))).
apply compatible.
apply symetrique.
apply Chasles.
apply compatible.
apply symetrique.
apply
transitive with (plus (cons (vec M B) (vec M O)) (cons (vec M O) (vec M A))).
apply plus_sym.
apply Chasles.
apply symetrique.
apply
transitive with (plus (cons (vec M B) (vec M O)) (cons (vec M O) (vec M A))).
apply plus_sym.
apply Chasles.
apply
transitive
with
(plus
(plus (cons (vec O A) (vec O M))
(plus (cons (vec M O) (vec M A)) (cons (vec M O) (vec M A))))
(plus (cons (vec O M) (vec O B))
(plus (cons (vec M B) (vec M O)) (cons (vec M B) (vec M O))))).
apply symetrique.
apply calcul3.
apply compatible.
try exact H2.
try exact H1.
try exact H.
try exact H0.
Qed.
unfold double, orthogonal in |- *.
intros A B O T H H0; try assumption.
apply
transitive
with
(plus (plus (cons (vec A T) (vec O A)) (cons (vec O A) (vec A B)))
(plus (cons (vec A T) (vec O A)) (cons (vec O A) (vec A B))));
auto.
apply compatible; auto.
apply
transitive
with
(plus (plus (cons (vec A T) (vec O A)) (cons (vec A T) (vec O A)))
(plus (cons (vec O A) (vec A B)) (cons (vec O A) (vec A B))));
auto.
apply calcul4.
apply
transitive
with (plus pi (plus (cons (vec O A) (vec A B)) (cons (vec O A) (vec A B))));
auto.
apply compatible; auto.
lapply (triangle_isocele (A:=O) (B:=A) (C:=B)).
intros H1; try assumption.
apply
transitive
with
(plus
(plus (cons (vec O A) (vec O B))
(plus (cons (vec A B) (vec A O)) (cons (vec A B) (vec A O))))
(plus (cons (vec O A) (vec A B)) (cons (vec O A) (vec A B))));
auto.
apply compatible; auto.
apply
transitive
with
(plus (cons (vec O A) (vec O B))
(plus (plus (cons (vec A B) (vec A O)) (cons (vec A B) (vec A O)))
(plus (cons (vec O A) (vec A B)) (cons (vec O A) (vec A B)))));
auto.
apply
transitive
with
(plus (cons (vec O A) (vec O B))
(plus (plus (cons (vec A B) (vec A O)) (cons (vec O A) (vec A B)))
(plus (cons (vec A B) (vec A O)) (cons (vec O A) (vec A B)))));
auto.
apply compatible; auto.
apply calcul4.
apply transitive with (plus (cons (vec O A) (vec O B)) (plus pi pi)); auto.
apply compatible; auto.
apply compatible; auto.
apply
transitive with (plus (cons (vec O A) (vec A B)) (cons (vec A B) (vec A O)));
auto.
apply transitive with (cons (vec O A) (vec A O)); auto.
apply transitive with (cons (vec O A) (opp (vec O A))); auto.
apply vR_R_compatible; auto.
apply v_sym; apply opp_vect.
apply
transitive with (plus (cons (vec O A) (vec A B)) (cons (vec A B) (vec A O)));
auto.
apply transitive with (cons (vec O A) (vec A O)); auto.
apply transitive with (cons (vec O A) (opp (vec O A))); auto.
apply vR_R_compatible; auto.
apply v_sym; apply opp_vect.
apply transitive with (plus (cons (vec O A) (vec O B)) zero).
apply compatible; auto.
apply plus_zero.
try exact H.
Qed.
unfold orthogonal in |- *.
intros A B O T T' H H0 H1; try assumption.
unfold colineaire in |- *.
lapply (tangente (A:=A) (B:=B) (O:=O) (T:=T)); auto.
intros H2; try assumption.
apply
transitive
with (double (plus (cons (vec A T) (vec A B)) (cons (vec A B) (vec A T'))));
auto.
unfold double in |- *.
apply
transitive
with
(plus (plus (cons (vec A T) (vec A B)) (cons (vec A T) (vec A B)))
(plus (cons (vec A B) (vec A T')) (cons (vec A B) (vec A T'))));
auto.
apply calcul4.
apply
transitive with (plus (cons (vec O A) (vec O B)) (cons (vec O B) (vec O A))).
apply compatible; auto.
apply transitive with (double (cons (vec A B) (vec A T'))); auto.
apply
regulier
with
(a := double (cons (vec A T') (vec A B)))
(c := cons (vec O A) (vec O B)); auto.
apply
transitive
with
(double (plus (cons (vec A T') (vec A B)) (cons (vec A B) (vec A T'))));
auto.
apply transitive with (double (cons (vec A T') (vec A T'))); auto.
apply transitive with (plus zero zero); auto.
unfold double in |- *.
apply compatible; auto.
apply transitive with zero; auto.
apply transitive with (cons (vec O A) (vec O A)); auto.
Qed.
intros M A B O M' H H0 H1 H2 H3; try assumption.
apply transitive with (cons (vec O A) (vec O B)).
apply angle_inscrit; auto.
apply symetrique; apply angle_inscrit; auto.
Qed.
elim non_vide_V; intros u H; clear H; try exact H.
intros a; try assumption.
elim angle_cons with (a := a) (u := u); intros v H0; try exact H0.
exists (cons v u).
apply transitive with (plus (cons u v) (cons v u)).
apply compatible; auto.
auto.
Qed.
Parameter pisurdeux : AV.
Hint Resolve double_pisurdeux.
intros u; try assumption.
cut (exists v : V, R (double (cons u v)) pi).
intros H; try assumption.
elim H; intros v H0; clear H; try exact H0.
exists v.
auto.
elim angle_cons with (a := pisurdeux) (u := u); intros v H0; try exact H0.
exists v.
apply transitive with (double pisurdeux).
auto.
auto.
Qed.

Lemma unicite_circonscrit :
forall M A B O O' : PO,
isocele O A B ->
isocele O M B ->
isocele O M A ->
isocele O' A B ->
isocele O' M B ->
isocele O' M A ->
(colineaire (vec O A) (vec O' A) /\ colineaire (vec O B) (vec O' B)) /\
colineaire (vec O M) (vec O' M).