module Numeric.Rig.Ordered ( OrderedRig ) where import Numeric.Rig.Class import Numeric.Order.Additive import Numeric.Natural -- x <= y ==> x + z <= y + z -- 0 <= x && y <= z implies xy <= xz -- 0 <= x <= 1 class (AdditiveOrder r, Rig r) => OrderedRig r instance OrderedRig Integer instance OrderedRig Natural instance OrderedRig Bool instance OrderedRig () instance (OrderedRig a, OrderedRig b) => OrderedRig (a, b) instance (OrderedRig a, OrderedRig b, OrderedRig c) => OrderedRig (a, b, c) instance (OrderedRig a, OrderedRig b, OrderedRig c, OrderedRig d) => OrderedRig (a, b, c, d) instance (OrderedRig a, OrderedRig b, OrderedRig c, OrderedRig d, OrderedRig e) => OrderedRig (a, b, c, d, e)