proposition: Lemma cosine_rule' v1 v2 v3 : 2%:R * ((v1 - v2) *m (v3 - v1)^T) = (v3 - v2) *m (v3 - v2)^T - ((v3 - v1) *m (v3 - v1)^T + (v2 - v1) *m (v2 - v1)^T).
proof: Proof. apply /eqP; rewrite -[v1 - v2]opprB mulNmx mulrN eq_sym subr_eq. by rewrite [X in _ == X]addrC (cosine_rule v1). 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