proposition: Lemma extension_contraction x y z k: k != 0 -> extension x y k == z = (contraction x z k == y).
proof: Proof. move=> k_neq0; rewrite /extension /contraction. suffices: (k*:(k^-1 *: (y - x) + x) == k*:z) = (k^-1 *: (y - x) + x == z). move<-; rewrite scalerDr scalerA divff // scale1r eq_sym -subr_eq. by rewrite -subr_eq opprK -scalerBr. rewrite -[X in X = _]subr_eq0 -[X in _ = X]subr_eq0 -scalerBr scaler_eq0. by move/negPf: k_neq0 ->; rewrite orFb. Qed.
imports: mathcomp.ssreflect.ssreflect mathcomp(ssrbool ssrfun ssrnat eqtype seq order) mathcomp(fintype bigop) mathcomp(ssralg ssrnum matrix) mathcomp(zmodp) GeoCoq.Axioms.tarski_axioms GeoCoq.Axioms.gupta_inspired_variant_axioms GeoCoq.Meta_theory.Models.gupta_inspired_to_tarski GeoCoq.Meta_theory.Counter_models.coplanarity GeoCoq.Meta_theory.Parallel_postulates.parallel_postulates GeoCoq.Tarski_dev.Ch12_parallel_inter_dec