"Abstraction of numeric types with addition, 
 `x + y`, subtraction, `x - y`, multiplication, 
 `x * y`, and division, `x / y`, along with 
 additive inverse `-x`.
 
 In general, a numeric type need not define a
 [[total order|Comparable]]. For example, complex 
 numbers do not have a total order. Numeric types 
 with a total order also satisfy [[Scalar]]."
see (`interface Scalar`)
by ("Gavin")
shared interface Numeric<Other> of Other
        satisfies Summable<Other> & Invertable<Other>
        given Other satisfies Numeric<Other> {

    "The difference between this number and the given 
     number."
    shared formal Other minus(Other other);

    "The product of this number and the given number."
    shared formal Other times(Other other);

    "The quotient obtained by dividing this number by 
     the given number. For integral numeric types, this 
     operation results in a remainder."
    see (`interface Integral`)
    shared formal Other divided(Other other);

}

/*shared N plus<X,Y,N>(X x, Y y)
        given N of X|Y satisfies Numeric<N>
        given X satisfies Castable<N> & Numeric<X>
        given Y satisfies Castable<N> & Numeric<Y> {
    return x.as<N>().plus(y.as<N>());
}*/