def w1_v

bend-collections-laws-math@1.0.0.0 · proofs/math/typed/f64divq.bend:52

import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64divq.bend as F64divq
import Base
import bend-collections-laws-math@1.0.0.0/spec/lib/common.bend as C
import bend-collections-laws-math@1.0.0.0/spec/math/w64.bend as SW
import bend-collections-laws-math@1.0.0.0/src/math/w64.bend as X
import bend-collections-laws-math@1.0.0.0/src/math/u64.bend as WU
import bend-collections-laws-math@1.0.0.0/proofs/lib/word.bend as WD
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/width.bend as WW
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/w64add.bend as WA
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/w64sh.bend as SH
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64addb.bend as AB

52def w1_v(+one: Nat, +h1: {one == 1n : Nat}, +d1: U32, +d2: U32, +c: U32, +hc: {c == U32{WD.pw(32n, 30n)} : U32}) -> {SW.value(X.add(WU.U64{0, c}, X.shr(WU.U64{d2, d1}, 2n))) == Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))) : Nat}:
53  a1 = WA.add_value(WU.U64{0, c}, X.shr(WU.U64{d2, d1}, 2n))
54  +a2 = Equal.cong(Nat, Nat, z => C.low(64n, Nat.add(z, SW.value(X.shr(WU.U64{d2, d1}, 2n)))), SW.value(WU.U64{0, c}), C.shift(62n, one), AB.c62(one, h1, c, hc))
55  +a3 = Equal.cong(Nat, Nat, z => C.low(64n, Nat.add(C.shift(62n, one), z)), SW.value(X.shr(WU.U64{d2, d1}, 2n)), C.high(2n, SW.value(WU.U64{d2, d1})), SH.shr_value(WU.U64{d2, d1}, 2n))
56  +a4 = WW.low_fit(64n, Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))), SH.fits_mono(63n, 64n, Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))), {==}, t63(one, h1, d1, d2)))
57  Equal.trans(Nat, SW.value(X.add(WU.U64{0, c}, X.shr(WU.U64{d2, d1}, 2n))), C.low(64n, Nat.add(SW.value(WU.U64{0, c}), SW.value(X.shr(WU.U64{d2, d1}, 2n)))), Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))), a1, Equal.trans(Nat, C.low(64n, Nat.add(SW.value(WU.U64{0, c}), SW.value(X.shr(WU.U64{d2, d1}, 2n)))), C.low(64n, Nat.add(C.shift(62n, one), SW.value(X.shr(WU.U64{d2, d1}, 2n)))), Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))), a2, Equal.trans(Nat, C.low(64n, Nat.add(C.shift(62n, one), SW.value(X.shr(WU.U64{d2, d1}, 2n)))), C.low(64n, Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1})))), Nat.add(C.shift(62n, one), C.high(2n, SW.value(WU.U64{d2, d1}))), a3, a4)))

Uses (19)

Used by (1)