    "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>());
    }*/