Lemmas about bitwise operations on integers. #
Possibly only of archaeological significance.
testBit m n
returns whether the (n+1)ˢᵗ
least significant bit is 1
or 0
Equations
- Int.testBit x x = match x, x with | Int.ofNat m, n => Nat.testBit m n | Int.negSucc m, n => !Nat.testBit m n
Instances For
Int.natBitwise
is an auxiliary definition for Int.bitwise
.
Equations
- Int.natBitwise f m n = bif f false false then Int.negSucc (Nat.bitwise' (fun x y => !f x y) m n) else ↑(Nat.bitwise' f m n)
Instances For
Int.bitwise
applies the function f
to pairs of bits in the same position in
the binary representations of its inputs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
lnot
flips all the bits in the binary representation of its input
Equations
- Int.lnot x = match x with | Int.ofNat m => Int.negSucc m | Int.negSucc m => ↑m
Instances For
ldiff' a b
performs bitwise set difference. For each corresponding
pair of bits taken as booleans, say aᵢ
and bᵢ
, it applies the
boolean operation aᵢ ∧ bᵢ
to obtain the iᵗʰ
bit of the result.
Equations
- One or more equations did not get rendered due to their size.
Instances For
m <<< n
produces an integer whose binary representation
is obtained by left-shifting the binary representation of m
by n
places
Equations
- One or more equations did not get rendered due to their size.
m >>> n
produces an integer whose binary representation
is obtained by right-shifting the binary representation of m
by n
places
Equations
- Int.instShiftRightInt = { shiftRight := fun m n => m <<< (-n) }