def rot_lo.bnd

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

import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base
import bend-kit-collections@0.1.4.1/LAWS.bend as Laws
import bend-kit-collections@0.1.4.1/omap.bend as O

372def rot_lo.bnd(
373  ~K: Data, ~V: Data, ~cmp: K -> K -> Cmp, ~trans: Trans(~K, ~cmp),
374  hi: O.OMap<K, V>, +lb: Maybe<&2, K>, +ub: Maybe<&2, K>, +k: K, +v: V,
375  +lo: O.OMap<K, V>,
376  +ea: {Laws.above(~K, ~cmp, lb, k) == True{} : Bool},
377  eb: {Laws.below(~K, ~cmp, ub, k) == True{} : Bool},
378  el: {Laws.bounded(~K, ~V, ~cmp, lo, lb, Some{k}) == True{} : Bool},
379  +eh: {Laws.bounded(~K, ~V, ~cmp, hi, Some{k}, ub) == True{} : Bool}
380) -> {Laws.bounded(~K, ~V, ~cmp, O.OMap.rot_lo(K, V, k, v, lo, hi), lb, ub) == True{} : Bool}:
381  match hi:
382    case O.OTip{}:
383      bn.i(~K, ~V, ~cmp, lb, ub, k, v, lo, O.OTip{}, ea, eb, el, eh)
384    case O.OBin{s, +hk, +hv, +hl, +hh}:
385      rot_lo.pick.bnd(~K, ~V, ~cmp, ~trans,
386        U32.is_lt((O.OMap.size(K, V, hl) + 1 : U32),
387          (2 * (O.OMap.size(K, V, hh) + 1) : U32)),
388        lb, ub, k, v, lo, hk, hv, hl, hh, ea, el, eh)

Uses (16)

Used by (1)