proofs/math/typed/f64sqv.bend checks
raw source on the hub · import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64sqv.bend as F64sqv
21 imports
import Base import ../../../spec/lib/common.bend as C import ../../../spec/math/w64.bend as SW import ../../../src/math/w64.bend as X import ../../../src/math/u64.bend as WU import ../../../src/math/natural.bend as M import ../../lib/nat.bend as N import ../../lib/logic.bend as L import ../../lib/lemmas/proofs/nat_algebra.bend as NA import ../natural/arith.bend as NR import ./width.bend as WW import ./natcmp.bend as NC import ./u32laws.bend as LW import ./w64add.bend as WA import ./w64isq.bend as ISQ import ./f64round.bend as FR import ./f64sqa.bend as AQ import ./f64sqw.bend as QW import ./w64mul.bend as W64M import ./w64div.bend as W64D import ../natural/sqrtn.bend as SQ2
Definitions
def v source · line 26 · raw
@+x:U32 -> Nat
def mone source · line 29 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> {Nat.mul(one, one) == one : Nat}
def one_le source · line 32 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> {Nat.is_le(1n, one) == True{} : Bool}
def psq source · line 36 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+k:Nat -> {Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(k, one), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(k, one)) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(Nat.add(k, k), one) : Nat}(2^k)^2 as one shift
def lo_val source · line 39 · raw
@+w:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(32n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(w)) == True{} : Bool} -> {v(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(w)) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(w) : Nat}
def shmk source · line 44 · raw
@+a:Nat -> @+b:Nat -> @+x:Nat -> @+h:{Nat.is_le(a, b) == True{} : Bool} -> {Nat.is_le(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(a, x), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(b, x)) == True{} : Bool}
def p_lt source · line 48 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+k:Nat -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(k, one), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(1n+k, one)) == True{} : Bool}
def vn62 source · line 53 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(62n, one)) == True{} : Bool}
def vn60 source · line 56 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_le(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(60n, one), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool}
def iv31 source · line 59 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(31n, one)) == True{} : Bool}
def iw_v source · line 62 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)) == 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) : Nat}
def iw32 source · line 65 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(32n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh))) == True{} : Bool}
def lo_iv source · line 69 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {v(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh))) == 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) : Nat}
def plus1 source · line 72 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.add(v(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh))), v(1)) == 1n+0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) : Nat}
def add1_v source · line 75 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {v(U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 1)) == 1n+0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) : Nat}
def r0_v source · line 81 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64{0, U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 1)}) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat}r0 = (isqrt(nh) + 1) * 2^32
def nn_eq source · line 85 · raw
@+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))) : Nat}
def s_lo source · line 88 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_le(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) == True{} : Bool}
def ilt1 source · line 92 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))))) == True{} : Bool}shift(32, isqrt nh) <= S < r0
def s_hi source · line 95 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> @+r0w:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+hR0:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat} -> @+hhi:{U32.is_zero(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.hi(r0w)) == False{} : Bool} -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w)) == True{} : Bool}
def s62 source · line 101 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_le(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(62n, one), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) == True{} : Bool}S >= 2^62
def r0_sd source · line 105 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> @+r0w:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+hR0:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat} -> @+hhi:{U32.is_zero(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.hi(r0w)) == False{} : Bool} -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))))) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w) : Nat}
def r0_hi source · line 108 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {U32.is_zero(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.hi(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64{0, U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 1)})) == False{} : Bool}
def r0_63 source · line 111 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> @+r0w:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+hR0:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.add(one, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat} -> @+hhi:{U32.is_zero(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.hi(r0w)) == False{} : Bool} -> {Nat.is_le(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(r0w), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(63n, one)) == True{} : Bool}
def not_t source · line 121 · raw
@+x:Bool -> @+h:{Bool.not(x) == True{} : Bool} -> {x == False{} : Bool}
def dq_le source · line 129 · raw
@+x:Nat -> @+D:Nat -> @+hD:{Nat.is_lt(0n, D) == True{} : Bool} -> {Nat.is_le(Nat.mul(Nat.div(x, D), D), x) == True{} : Bool}q D <= x < (q + 1) D for q = x / D
def dq_lt source · line 136 · raw
@+x:Nat -> @+D:Nat -> @+hD:{Nat.is_lt(0n, D) == True{} : Bool} -> {Nat.is_lt(x, Nat.mul(1n+Nat.div(x, D), D)) == True{} : Bool}
def s_v source · line 146 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {v(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh))) == 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) : Nat}
def hn_v source · line 149 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.add(Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))))) == 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh) : Nat}
def mm_v source · line 152 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.mul32(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))) == Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))) : Nat}
def w_v source · line 155 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.sub(nh, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.mul32(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh))))) == Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat}
def r_le source · line 160 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_le(Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) == True{} : Bool}r <= 2 s, as nh < (s + 1)^2
def d_lt source · line 168 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_lt(Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, one)) == True{} : Bool}2 s < 2^32
def dw_v source · line 174 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {v(U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))) : Nat}
def d_pos source · line 180 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_lt(0n, Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) == True{} : Bool}2 s > 0, as nh >= 2^60
def dw_nz source · line 185 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {U32.is_zero(U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))) == False{} : Bool}
def lo_w source · line 190 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {v(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.sub(nh, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.mul32(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))))) == Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat}
def q_v source · line 195 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.fst_q(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.div32(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64{0, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.sub(nh, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.mul32(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))))}, U32.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.lo(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/w64.isqrt(nh)))))) == Nat.div(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))))), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))) : Nat}
def hq_le source · line 198 · raw
@+one:Nat -> @+h1:{one == 1n : Nat} -> @+nh:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+h62:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(62n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == True{} : Bool} -> @+h60:{0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.fits(60n, 0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)) == False{} : Bool} -> {Nat.is_le(Nat.mul(Nat.div(0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh))))), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))), 0xf86f5f1d9a594d5a5cff999100e01d03/spec/lib/common.shift(32n, Nat.sub(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh), Nat.mul(0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)), 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/natural.isqrt(0xf86f5f1d9a594d5a5cff999100e01d03/spec/math/w64.value(nh)))))) == True{} : Bool}