Ltac lg_instance_not_col l P A B :=
assert(tempo_sg:= ex_points_lg_not_col l P);
match goal with
|HP : Q_Cong l |-  _ => match goal with
|HQ : ~ Q_Cong_Null l |-  _ => assert(tempo_HQ:=HQ);
apply (tempo_sg HP) in tempo_HQ;
elim tempo_HQ;
intro A;
let tempo_HR := fresh "tempo_HR" in
intro tempo_HR;
elim tempo_HR;
intro B;
intro;
spliter;
clear tempo_HR tempo_HQ
end
end;
clear tempo_sg.
Tactic Notation "soit" ident(B) "sur" "la" "demie" "droite" ident(A) ident(P) "/" "longueur" ident(A) ident(B) "=" ident(l) := lg_instance2 l A P B.
Section Length_4.
Context `{TnEQD:Tarski_neutral_dimensionless_with_decidable_point_equality}.
Notation "l1 =l= l2" := (EqL l1 l2) (at level 80, right associativity).

Lemma ex_eql : forall l1 l2, (exists A , exists B, Len A B l1 /\ Len A B l2)  -> l1 =l= l2.