Documentation

Cayley.Checker.QI

Unnormalized dyadic numbers #

⟨m, e⟩ : QI is m / 2^e. Operations never normalize: addition aligns exponents by a multiplication with 2^d (computed with Nat.pow, which the kernel evaluates with GMP), and comparison cross-multiplies. Every operation is a handful of Int/Nat primitives, which keeps decide +kernel evaluation cheap (core Dyadic normalizes with a well-founded loop).

structure Cayley.QI :

The dyadic number m / 2^e.

Instances For
    @[inline]

    2^k as an integer.

    Equations
    Instances For
      def Cayley.QI.add (a b : QI) :
      Equations
      Instances For
        def Cayley.QI.mul (a b : QI) :
        Equations
        Instances For
          def Cayley.QI.neg (a : QI) :
          Equations
          Instances For
            def Cayley.QI.sub (a b : QI) :
            Equations
            Instances For
              @[instance_reducible]
              Equations
              @[instance_reducible]
              Equations
              @[instance_reducible]
              Equations
              @[instance_reducible]
              Equations
              @[instance_reducible]
              instance Cayley.QI.instOfNat (n : Nat) :
              Equations
              @[instance_reducible]
              Equations
              @[instance_reducible]
              Equations
              def Cayley.QI.le (a b : QI) :

              a ≤ b by cross-multiplication.

              Equations
              Instances For
                def Cayley.QI.lt (a b : QI) :
                Equations
                Instances For
                  @[instance_reducible]
                  Equations
                  @[instance_reducible]
                  Equations
                  @[instance_reducible]
                  instance Cayley.QI.instDecidableLe (a b : QI) :
                  Equations
                  @[instance_reducible]
                  instance Cayley.QI.instDecidableLt (a b : QI) :
                  Decidable (a < b)
                  Equations