End Aux.
Section Ratio.
Variable R : realFieldType.
Variable n : nat.
Implicit Types (v : (@Vector R n)).
Definition ratio v1 v2 :=
if [pick k : 'I_(n.+1) | v2 0 k != 0] is Some k
then v1 0 k / v2 0 k else 0.

(* Specifications: *)
Lemma ratio0p p : ratio 0 p = 0.
Lemma ratiop0 p : ratio p 0 = 0.
Lemma ratioNr v1 v2 : ratio (- v1) v2 = - ratio v1 v2.
Lemma ratiorN v1 v2 : ratio v1 (- v2) = - ratio v1 v2.
Lemma ratioNN v1 v2 : ratio v1 v2 = ratio (- v1) (- v2).
Lemma add_ratio_1 v1 v2 : v2 != 0 ->
ratio v1 v2 + 1 = ratio (v1 + v2) v2.
Lemma ratio_neq0 v1 v2:
v1 != 0 -> v2 != 0 -> v1 == ratio v1 v2 *: v2 -> ratio v1 v2 != 0.
Lemma ratio_eq v1 v2 r : v2 != 0 -> v1 == r *: v2 -> ratio v1 v2 = r.
Lemma ratio_bet' v1 v2 k1 :
0 < k1 -> v1 != v2 -> k1 = ratio (v2 - v1) (k1^-1 *: (v2 - v1)).
Lemma ratio_bet'' v1 v2 k1 :
0 < k1 -> v1 != v2 -> k1^-1 = ratio (v2 - v1) (k1 *: (v2 - v1)).
Lemma ratio_lt0_v1_neq0 v1 v2 : ratio v1 v2 < 0 -> v1 != 0.
End Ratio.