Library HighSchoolGeometry.orthogonalite_espace
Require Export orthogonalite.
Require Export Plan_espace.
Set Implicit Arguments.
Unset Strict Implicit.
Parameter orthogonales : DR → DR → Prop.
Axiom
def_orthogonales :
∀ A B C D : PO,
A ≠ B →
C ≠ D →
orthogonal (vec A B) (vec C D) → orthogonales (droite A B) (droite C D).
Axiom
def_orthogonales2 :
∀ A B C D : PO,
A ≠ B →
C ≠ D →
orthogonales (droite A B) (droite C D) → orthogonal (vec A B) (vec C D).
Parameter perpendiculaires : DR → DR → Prop.
Axiom
def_perpendiculaires :
∀ A B C D : PO,
A ≠ B →
C ≠ D →
coplanaires A B C D →
orthogonales (droite A B) (droite C D) →
perpendiculaires (droite A B) (droite C D).
Axiom
def_perpendiculaires2 :
∀ A B C D : PO,
A ≠ B →
C ≠ D →
perpendiculaires (droite A B) (droite C D) →
coplanaires A B C D ∧ orthogonales (droite A B) (droite C D).
Hint Resolve ortho_somme ortho_combinaison_lineaire def_orthogonales2
def_orthogonales def_perpendiculaires: geo.
Lemma perpendiculaires_orthogonales :
∀ A B C D : PO,
A ≠ B →
C ≠ D →
perpendiculaires (droite A B) (droite C D) →
orthogonales (droite A B) (droite C D).
intros.
elim def_perpendiculaires2 with (A := A) (B := B) (C := C) (D := D);
[ intros; try exact H3 | auto | auto | auto ].
Qed.
Lemma orthogonales_2droites_secantes :
∀ A B C D E F G : PO,
¬ alignes A B C →
D ≠ E →
F ≠ G →
coplanaires A B C F →
coplanaires A B C G →
orthogonales (droite A B) (droite D E) →
orthogonales (droite A C) (droite D E) →
orthogonales (droite F G) (droite D E).
intros A B C D E F G H; try assumption.
assert (A ≠ B); auto with geo.
intros.
apply def_orthogonales; auto.
lapply (def_orthogonales2 (A:=A) (B:=B) (C:=D) (D:=E)); auto; intros.
lapply (def_orthogonales2 (A:=A) (B:=C) (C:=D) (D:=E)); auto; intros.
hcoplanaires H3 ipattern:k ipattern:k'.
hcoplanaires H4 ipattern:k0 ipattern:k'0.
replace (vec F G) with (add_PP (mult_PP (-1) (vec A F)) (vec A G)).
rewrite H4.
rewrite H3.
replace
(add_PP (mult_PP (-1) (add_PP (mult_PP k (vec A B)) (mult_PP k' (vec A C))))
(add_PP (mult_PP k0 (vec A B)) (mult_PP k'0 (vec A C)))) with
(add_PP (mult_PP (-1 × k + k0) (vec A B))
(mult_PP (-1 × k' + k'0) (vec A C))).
Simplortho.
Ringvec.
Ringvec.
apply non_alignes_distincts with B; auto.
Qed.
Parameter orthogonaux : DR → PL → Prop.
Axiom
def_orthogonaux :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
orthogonales (droite A B) (droite D E) →
orthogonales (droite A C) (droite D E) →
orthogonaux (droite D E) (plan A B C).
Axiom
def_orthogonaux2 :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
orthogonaux (droite D E) (plan A B C) →
orthogonales (droite A B) (droite D E) ∧
orthogonales (droite A C) (droite D E).
Lemma vecteurs_orthogonaux :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
orthogonal (vec A B) (vec D E) →
orthogonal (vec A C) (vec D E) → orthogonaux (droite D E) (plan A B C).
intros.
deroule_triangle A B C.
apply def_orthogonaux; auto with geo.
Qed.
Lemma vecteurs_orthogonaux_rec :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
orthogonaux (droite D E) (plan A B C) →
orthogonal (vec A B) (vec D E) ∧ orthogonal (vec A C) (vec D E).
intros.
deroule_triangle A B C.
elim def_orthogonaux2 with (A := A) (B := B) (C := C) (D := D) (E := E);
[ intros H5 H6; try clear def_orthogonaux2; try exact H6
| auto
| auto
| auto ].
intros.
split; auto with geo.
Qed.
Lemma orthogonaux_orthogonales_toute_droite :
∀ A B C D E F G : PO,
¬ alignes A B C →
D ≠ E →
F ≠ G →
coplanaires A B C F →
coplanaires A B C G →
orthogonaux (droite D E) (plan A B C) →
orthogonales (droite F G) (droite D E).
intros.
assert (A ≠ B); auto with geo.
apply orthogonales_2droites_secantes with (1 := H); auto.
elim def_orthogonaux2 with (A := A) (B := B) (C := C) (D := D) (E := E);
[ try clear def_orthogonaux2; intros; auto | auto | auto | auto ].
elim def_orthogonaux2 with (A := A) (B := B) (C := C) (D := D) (E := E);
[ try clear def_orthogonaux2; intros; auto | auto | auto | auto ].
Qed.
Lemma orthogonales_toute_droite_orthogonaux :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
(∀ F G : PO,
F ≠ G →
coplanaires A B C F →
coplanaires A B C G → orthogonales (droite F G) (droite D E)) →
orthogonaux (droite D E) (plan A B C).
intros.
assert (A ≠ B); auto with geo.
apply def_orthogonaux; auto with geo.
apply H1; auto with geo.
apply non_alignes_distincts with B; auto with geo.
Qed.
Lemma orthogonaux_perce :
∀ A B C D E : PO,
¬ alignes A B C →
D ≠ E →
orthogonaux (droite D E) (plan A B C) → perce (droite D E) (plan A B C).
intros.
elim
position_relative_droite_plan
with (A := A) (B := B) (C := C) (D := D) (E := E);
[ intros H3; try clear position_relative_droite_plan; intros
| intros H3; try clear position_relative_droite_plan; try exact H3
| auto
| auto ].
absurd (D = E); auto.
elim para_plan_dr_vecteur with (A := A) (B := B) (C := C) (D := D) (E := E);
[ intros k H4; elim H4; intros k' H5; try clear H4; try exact H5
| auto
| auto
| auto ].
elim
vecteurs_orthogonaux_rec with (A := A) (B := B) (C := C) (D := D) (E := E);
[ try clear vecteurs_orthogonaux_rec; intros | auto | auto | auto ].
apply vecteur_nul_conf.
apply scalaire_non_degenere.
pattern (vec D E) at 1 in |- *; rewrite H5.
cut
(orthogonal (add_PP (mult_PP k (vec A B)) (mult_PP k' (vec A C))) (vec D E));
intros.
elim
existence_representant_comb_lin_vecteur
with (A := A) (B := B) (C := A) (D := C) (a := k) (b := k');
intros E0 H8; try clear existence_representant_comb_lin_vecteur;
rewrite <- H8.
rewrite <- H8 in H6.
rewrite (def_orthogonal (A:=A) (B:=E0) (C:=D) (D:=E)); auto.
apply ortho_combinaison_lineaire; auto.
Qed.
