def wd.top

bend-osdev-word64@0.1.1.0 · PROOF_div.bend:127

import bend-osdev-word64@0.1.1.0/PROOF_div.bend as PROOFDiv
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL
import bend-osdev-word64@0.1.1.0/word64.bend as W

127# the top bit of a word, below 2
128def wd.top(+x: W.W64) -> {Nat.is_lt(U32.to_nat(U32.shrn(W.W64.hi(x), 31n)), U.U32Nat.dbl(1n, 1n)) == True{} : Bool}:
129  Equal.trans(Bool, Nat.is_lt(U32.to_nat(U32.shrn(W.W64.hi(x), 31n)), U.U32Nat.dbl(1n, 1n)), Nat.is_lt(U.U32Nat.high(31n, U32.to_nat(W.W64.hi(x))), U.U32Nat.dbl(1n, 1n)), True{}, Equal.cong(Nat, Bool, zz => Nat.is_lt(zz, U.U32Nat.dbl(1n, 1n)), U32.to_nat(U32.shrn(W.W64.hi(x), 31n)), U.U32Nat.high(31n, U32.to_nat(W.W64.hi(x))), Equal.sym(Nat, U.U32Nat.high(31n, U32.to_nat(W.W64.hi(x))), U32.to_nat(U32.shrn(W.W64.hi(x), 31n)), Equal.sym(Nat, U32.to_nat(U32.shrn(W.W64.hi(x), 31n)), U.U32Nat.high(31n, U32.to_nat(W.W64.hi(x))), UL.u32_shrn_value(W.W64.hi(x), 31n)))), UL.high_lt(31n, 1n, 32n, U32.to_nat(W.W64.hi(x)), {==}, wu.lt(W.W64.hi(x))))

Uses (15)

Used by (1)