From mathcomp
From mathcomp
From mathcomp
From mathcomp
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Local Open Scope ring_scope.
Section Aux.
Definition andb_assoc := Bool.andb_assoc.
Variable R : realFieldType.
Variable n : nat.
Definition Vector := 'rV[R]_(n.+1).
Implicit Types (v : Vector).

(* Specifications: *)
Lemma eq_pick_neq0 v : (fun k => v 0 k != 0) =1 (fun k => (- v) 0 k != 0).
Lemma quad_eq0 v : (v *m v^T == 0) = (v == 0).
Lemma quad_eq0' v : ((v *m v^T) 0 0 == 0) = (v == 0).
Lemma quad_neq0 v : ((v *m v^T) 0 0 != 0) = (v != 0).
Lemma quad_ge0 v : 0 <= (v *m v^T) 0 0.
Lemma add11_neq0 : 1 + 1 != 0 :> R.
Lemma bet_neq0 (k1 k2 k3 : R) :
0 < k1 -> 0 < k2 -> k1 < 1 -> 0 < k3 -> (k1+k2-k1*k2)/k3 != 0.
Lemma eq_inv_scale (V : lmodType R) (s : R) (x y : V) :
s != 0 -> (x == s^-1 *: y) = (s *: x == y).
Lemma eq_div_scale (V : lmodType R) (s1 s2 : R) (x y : V) :
s2 != 0 -> (x == (s1/s2) *: y) = (s2 *: x == s1 *: y).
Lemma addf_divrr (F : fieldType) (x1 x2 y : F) :
y != 0 -> x1/y + x2/y = (x1+x2)/y.
Lemma cosine_rule v1 v2 v3 :
(v3 - v2) *m (v3 - v2)^T = (v3 - v1) *m (v3 - v1)^T + (v2 - v1) *m (v2 - v1)^T
- 2%:R * ((v2 - v1) *m (v3 - v1)^T).
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).