TorchLean API

FloatLib.Floats.Formats.FixedPoint.Exact.Proof

Rational semantics and correctness of exact fixed point #

A coefficient m with d fractional radix digits denotes m / β^d; the numerical system and erased proof views relate the runtime operations to rational arithmetic. Common-scale addition is exact; multiplication changes the scale to the sum of the operand fractional-digit counts.

Import Exact.Runtime for the representation and executable functions. The configured family uses the refinement theorems here to provide the same operations through ExecFloat.

The exact rational numerical system at one fixed radix and scale.

Instances For
    @[reducible, inline]

    A fixed-point code with an erased proof of its complete denotation.

    Instances For
      @[reducible, inline]
      abbrev FloatLib.Floats.Formats.FixedPoint.AtFinite (radix : Numerics.Radix) (fractionalDigits : ) (value : ) :

      A fixed-point code with an erased proof of its exact rational value.

      Instances For

        Arithmetic refinement #

        @[simp]
        theorem FloatLib.Floats.Formats.FixedPoint.Code.toRat_add {radix : Numerics.Radix} {fractionalDigits : } (left right : Code radix fractionalDigits) :
        (left.add right).toRat = left.toRat + right.toRat

        Decoding exact fixed-point addition gives rational addition.

        @[simp]
        theorem FloatLib.Floats.Formats.FixedPoint.Code.toRat_neg {radix : Numerics.Radix} {fractionalDigits : } (value : Code radix fractionalDigits) :
        value.neg.toRat = -value.toRat

        Decoding exact fixed-point negation gives rational negation.

        @[simp]
        theorem FloatLib.Floats.Formats.FixedPoint.Code.toRat_sub {radix : Numerics.Radix} {fractionalDigits : } (left right : Code radix fractionalDigits) :
        (left.sub right).toRat = left.toRat - right.toRat

        Decoding exact fixed-point subtraction gives rational subtraction.

        @[simp]
        theorem FloatLib.Floats.Formats.FixedPoint.Code.toRat_mul {radix : Numerics.Radix} {p q : } (left : Code radix p) (right : Code radix q) :
        (left.mul right).toRat = left.toRat * right.toRat

        Decoding scale-composing fixed-point multiplication gives rational multiplication.

        @[simp]
        theorem FloatLib.Floats.Formats.FixedPoint.numericalSystem_represents_iff {radix : Numerics.Radix} {fractionalDigits : } (value : Code radix fractionalDigits) (scalar : ) :
        (numericalSystem radix fractionalDigits).Represents value scalar value.toRat = scalar

        Representation in the fixed-point numerical system is equality of decoded rationals.

        theorem FloatLib.Floats.Formats.FixedPoint.add_refines {radix : Numerics.Radix} {fractionalDigits : } :
        Numerics.Operation.Finite2 (numericalSystem radix fractionalDigits) (numericalSystem radix fractionalDigits) (numericalSystem radix fractionalDigits) Code.add fun (left right : ) => left + right

        Fixed-point addition is a finite refinement of rational addition.

        theorem FloatLib.Floats.Formats.FixedPoint.neg_refines {radix : Numerics.Radix} {fractionalDigits : } :
        Numerics.Operation.Finite1 (numericalSystem radix fractionalDigits) (numericalSystem radix fractionalDigits) Code.neg fun (value : ) => -value

        Fixed-point negation exactly refines rational negation.

        theorem FloatLib.Floats.Formats.FixedPoint.sub_refines {radix : Numerics.Radix} {fractionalDigits : } :
        Numerics.Operation.Finite2 (numericalSystem radix fractionalDigits) (numericalSystem radix fractionalDigits) (numericalSystem radix fractionalDigits) Code.sub fun (left right : ) => left - right

        Fixed-point subtraction exactly refines rational subtraction.

        theorem FloatLib.Floats.Formats.FixedPoint.mul_refines {radix : Numerics.Radix} {p q : } :
        Numerics.Operation.Finite2 (numericalSystem radix p) (numericalSystem radix q) (numericalSystem radix (p + q)) Code.mul fun (left right : ) => left * right

        Multiplication composes the two fixed scales and refines rational multiplication exactly.