Definition Qcabs (x:Qc) : Qc := {| canon := Qcabs_canon x (canon x) |}.Notation "[ q ]" := (Qcabs q) : Qc_scope.Ltac Qc_unfolds :=
  unfold Qcabs, Qcminus, Qcopp, Qcplus, Qcmult, Qcle, Q2Qc, this.

Lemma Qcabs_case (x:Qc) (P : Qc -> Type) : (0 <= x -> P x) -> (x <= 0 -> P (- x)) -> P [x].