Idris2Doc : Data.Prim.Bits32

Data.Prim.Bits32

(source)

Reexports

import public Control.WellFounded
import public Data.DPair
import public Data.Prim.Ord
import public Algebra.Solver.Ring

Definitions

data (<) : Bits32 -> Bits32 -> Type
  Witness that `m < n === True`.

Totality: total
Visibility: export
Constructor: 
LT : (0 _ : m < n = True) -> m < n

Hints:
(0 _ : m < n = True) -> m < n
Total Bits32 (<)
WellFounded Bits32 (<)

Fixity Declaration: infix operator, level 6
0 mkLT : (0 _ : m < n = True) -> m < n
  Contructor for `(<)`.

This can only be used in an erased context.

Totality: total
Visibility: export
0 runLT : m < n -> m < n = True
  Extractor for `(<)`.

This can only be used in an erased context.

Totality: total
Visibility: export
strictLT : (0 _ : m < n) -> Lazy c -> c
  We don't trust values of type `(<)` too much,
so we use this when creating magical results.

Totality: total
Visibility: export
0 (>) : Bits32 -> Bits32 -> Type
  Flipped version of `(<)`.

Totality: total
Visibility: public export
Fixity Declaration: infix operator, level 6
0 (<=) : Bits32 -> Bits32 -> Type
  `m <= n` mean that either `m < n` or `m === n` holds.

Totality: total
Visibility: public export
Fixity Declaration: infix operator, level 6
0 (>=) : Bits32 -> Bits32 -> Type
  Flipped version of `(<=)`.

Totality: total
Visibility: public export
Fixity Declaration: infix operator, level 6
0 (/=) : Bits32 -> Bits32 -> Type
  `m /= n` mean that either `m < n` or `m > n` holds.

Totality: total
Visibility: public export
Fixity Declaration: infix operator, level 6
comp : (m : Bits32) -> (n : Bits32) -> Trichotomy (<) m n
Totality: total
Visibility: export
MinBits32 : Bits32
  Lower bound of `Bits32`

Totality: total
Visibility: public export
MaxBits32 : Bits32
  Upper bound of `Bits32`

Totality: total
Visibility: public export
0 GTE_MinBits32 : (m : Bits32) -> m >= MinBits32
  `m >= 0` for all `m` of type `Bits32`.

Totality: total
Visibility: export
0 Not_LT_MinBits32 : m < 0 -> Void
  Not value of type `Bits32` is less than zero.

Totality: total
Visibility: export
0 LTE_MaxBits32 : (m : Bits32) -> m <= MaxBits32
  `m <= MaxBits32` for all `m` of type `Bits32`.

Totality: total
Visibility: export
0 Not_GT_MaxBits32 : m > MaxBits32 -> Void
  Not value of type `Bits32` is greater than `MaxBits32`.

Totality: total
Visibility: export
accessLT : (m : Bits32) -> Accessible (<) m
  Every value of type `Bits32` is accessible with relation
to `(<)`.

Totality: total
Visibility: export
accessGT : (m : Bits32) -> Accessible (>) m
  Every value of type `Bits32` is accessible with relation
to `(>)`.

Totality: total
Visibility: export
sdiv : Bits32 -> (d : Bits32) -> {auto 0 _ : 0 < d} -> Bits32
  Safe division.

This uses `0 < d` as a constraint instead
of `0 /= d`, because in my experience, the former
is much more useful.

Totality: total
Visibility: export
rdiv : (n : Bits32) -> (d : Bits32) -> {auto 0 _ : 1 < d} -> {auto 0 _ : 0 < n} -> Subset Bits32 (\{arg:0} => {arg:0} < n)
  Refined division.

This comes with a proof that the result is
strictly smaller than `n`.

This uses `0 < n` as a constraint instead
of `0 /= n`, because in my experience, the former
is much more useful.

Totality: total
Visibility: export
smod : Bits32 -> (d : Bits32) -> {auto 0 _ : 0 < d} -> Bits32
  Safe modulo.

This uses `0 < d` as a constraint instead
of `0 /= d`, because in my experience, the former
is much more useful.

If you need the postcondition that the result is strictly
smaller than `d`, use `rmod` instead.

Totality: total
Visibility: export
rmod : Bits32 -> (d : Bits32) -> {auto 0 _ : 0 < d} -> Subset Bits32 (\{arg:0} => {arg:0} < d)
  Refined modulo.

This comes with a proof that the result is strictly smaller
than `d`.

It uses `0 < d` as a constraint instead
of `0 /= d`, because in my experience, the former
is much more useful.

Totality: total
Visibility: export