# Library GeoCoq.Elements.OriginalProofs.lemma_lessthanbetween

Require Export GeoCoq.Elements.OriginalProofs.lemma_ray5.

Require Export GeoCoq.Elements.OriginalProofs.lemma_layoffunique.

Section Euclid.

Context `{Ax:euclidean_neutral}.

Lemma lemma_lessthanbetween :

∀ A B C,

Lt A B A C → Out A B C →

BetS A B C.

Proof.

intros.

let Tf:=fresh in

assert (Tf:∃ M, (BetS A M C ∧ Cong A M A B)) by (conclude_def Lt );destruct Tf as [M];spliter.

assert (neq A M) by (forward_using lemma_betweennotequal).

assert (Out A M C) by (conclude lemma_ray4).

assert (Out A C M) by (conclude lemma_ray5).

assert (Out A C B) by (conclude lemma_ray5).

assert (eq M B) by (conclude lemma_layoffunique).

assert (BetS A B C) by (conclude cn_equalitysub).

close.

Qed.

End Euclid.

Require Export GeoCoq.Elements.OriginalProofs.lemma_layoffunique.

Section Euclid.

Context `{Ax:euclidean_neutral}.

Lemma lemma_lessthanbetween :

∀ A B C,

Lt A B A C → Out A B C →

BetS A B C.

Proof.

intros.

let Tf:=fresh in

assert (Tf:∃ M, (BetS A M C ∧ Cong A M A B)) by (conclude_def Lt );destruct Tf as [M];spliter.

assert (neq A M) by (forward_using lemma_betweennotequal).

assert (Out A M C) by (conclude lemma_ray4).

assert (Out A C M) by (conclude lemma_ray5).

assert (Out A C B) by (conclude lemma_ray5).

assert (eq M B) by (conclude lemma_layoffunique).

assert (BetS A B C) by (conclude cn_equalitysub).

close.

Qed.

End Euclid.