proposition: Lemma BQ_inv_prop a b: ratp a -> ratp b -> a *q b = \1q -> b = BQinv a.
proof: Proof. move => aq bq h. have ha: ratp (BQinv a) by apply:QS_inv. case: (equal_or_not a \0q) => az. by move: h; rewrite az BQprod_0l // => hh; case:BQ1_nz. move: (f_equal (fun z => (BQinv a) *q z) h). rewrite BQprodA // BQprod_1r // (BQprodC _ a) (BQprod_inv1) // BQprod_1l //. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)