Variant ger0_xor_lt0 (x : R) : R -> bool -> bool -> Set :=
| Ger0NotLt0 of 0 <= x : ger0_xor_lt0 x x false true
| Ltr0NotGe0 of x < 0  : ger0_xor_lt0 x (- x) true false.
Variant ler0_xor_gt0 (x : R) : R -> bool -> bool -> Set :=
| Ler0NotLe0 of x <= 0 : ler0_xor_gt0 x (- x) false true
| Gtr0NotGt0 of 0 < x  : ler0_xor_gt0 x x true false.
Variant comparer0 x :
R -> bool -> bool -> bool -> bool -> bool -> bool -> Set :=
| ComparerGt0 of 0 < x : comparer0 x x false false false true false true
| ComparerLt0 of x < 0 : comparer0 x (- x) false false true false true false
| ComparerEq0 of x = 0 : comparer0 x 0 true true true true false false.

Lemma real_wlog_ltr P :
(forall a, P a a) -> (forall a b, (P b a -> P a b)) ->
(forall a b, a < b -> P a b) ->
forall a b : R, a \is real -> b \is real -> P a b.