proposition: Lemma dot2_eq0 v : ('[v] == 0) = (v == 0).
proof: Proof. rewrite /dot; apply/eqP/eqP => [/eqP|->]; last by rewrite mul0mx mxE /=. rewrite !mxE psumr_eq0 /=; last by move=> i _; rewrite mxE sqr_ge0. move => /allP /= sqp_eq0; apply/rowP => k; rewrite mxE. by have := sqp_eq0 k; rewrite mem_index_enum !mxE sqrf_eq0 => /(_ isT) /eqP. 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