def rhp.wb

bend-kit-collections@0.1.4.1 · PROOF.bend:1404

import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base
import bend-mathlib@0.7.4.0/nat.bend as MNat
import bend-kit-collections@0.1.4.1/omap.bend as O
import bend-kit-collections@0.1.4.1/nat_order.bend as Ord

1404def rhp.wb(
1405  -K: Data, -V: Data, single: Bool, +k: K, +v: V, +lk: K, +lv: V, +ll: O.OMap<K, V>,
1406  +lh: O.OMap<K, V>, +hi: O.OMap<K, V>,
1407  es: {Nat.is_lt(W(K, V, lh), Nat.mul(2n, W(K, V, ll))) == single : Bool},
1408  wbl: {WB(K, V, O.OBin{0, lk, lv, ll, lh}) == True{} : Bool},
1409  wbh: {WB(K, V, hi) == True{} : Bool},
1410  heavy: Ord.LE(1n+Nat.mul(3n, W(K, V, hi)), Nat.add(W(K, V, ll), W(K, V, lh))),
1411  alm: Ord.LE(Nat.add(W(K, V, ll), W(K, V, lh)), Nat.add(3n, Nat.mul(3n, W(K, V, hi))))
1412) -> {WB(K, V, O.OMap.rot_hi.pick(K, V, single, k, v, lk, lv, ll, lh, hi)) == True{} : Bool}:
1413  match single:
1414    case True{}:
1415      rhs.wb(K, V, k, v, lk, lv, ll, lh, hi, wbl, wbh, heavy, alm,
1416        MNat.succ_le_of_lt(W(K, V, lh), Nat.mul(2n, W(K, V, ll)), es))
1417    case False{}:
1418      rhd.wb(K, V, lh, k, v, lk, lv, ll, hi, wbl, wbh, heavy, alm,
1419        MNat.le_of_not_lt(W(K, V, lh), Nat.mul(2n, W(K, V, ll)), es))

Uses (14)

Used by (1)