def rot_lo.double.bnd

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

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

328def rot_lo.double.bnd(
329  ~K: Data, ~V: Data, ~cmp: K -> K -> Cmp, ~trans: Trans(~K, ~cmp),
330  hl: O.OMap<K, V>, +lb: Maybe<&2, K>, +ub: Maybe<&2, K>, +k: K, +v: V,
331  +lo: O.OMap<K, V>, +hk: K, +hv: V, +hh: O.OMap<K, V>,
332  +ea: {Laws.above(~K, ~cmp, lb, k) == True{} : Bool},
333  el: {Laws.bounded(~K, ~V, ~cmp, lo, lb, Some{k}) == True{} : Bool},
334  +eh: {Laws.bounded(~K, ~V, ~cmp, O.OBin{0, hk, hv, hl, hh}, Some{k}, ub) == True{} : Bool}
335) -> {Laws.bounded(~K, ~V, ~cmp,
336       O.OMap.rot_lo.double(K, V, k, v, lo, hk, hv, hl, hh), lb, ub) == True{} : Bool}:
337  match hl:
338    case O.OTip{}:
339      rot_lo.single.bnd(~K, ~V, ~cmp, ~trans, lb, ub, k, v, lo, hk, hv, O.OTip{}, hh,
340        ea, el, eh)
341    case O.OBin{s, +mk, +mv, +ml, +mh}:
342      +hl = {O.OBin{0, mk, mv, ml, mh} : O.OMap<K, V>}
343      +h_b = bn.b(~K, ~V, ~cmp, Some{k}, ub, hk, hv, hl, hh, eh)
344      +h_l = bn.l(~K, ~V, ~cmp, Some{k}, ub, hk, hv, hl, hh, eh)
345      +m_a = bn.a(~K, ~V, ~cmp, Some{k}, Some{hk}, mk, mv, ml, mh, h_l)
346      +m_b = bn.b(~K, ~V, ~cmp, Some{k}, Some{hk}, mk, mv, ml, mh, h_l)
347      bn.i(~K, ~V, ~cmp, lb, ub, mk, mv, O.OMap.bin(K, V, k, v, lo, ml),
348        O.OMap.bin(K, V, hk, hv, mh, hh),
349        above_trans(~K, ~cmp, ~trans, lb, k, mk, ea, m_a),
350        below_trans(~K, ~cmp, ~trans, ub, mk, hk, m_b, h_b),
351        bn.i(~K, ~V, ~cmp, lb, Some{mk}, k, v, lo, ml, ea, m_a, el,
352          bn.l(~K, ~V, ~cmp, Some{k}, Some{hk}, mk, mv, ml, mh, h_l)),
353        bn.i(~K, ~V, ~cmp, Some{mk}, ub, hk, hv, mh, hh, m_b, h_b,
354          bn.h(~K, ~V, ~cmp, Some{k}, Some{hk}, mk, mv, ml, mh, h_l),
355          bn.h(~K, ~V, ~cmp, Some{k}, ub, hk, hv, hl, hh, eh)))

Uses (17)

Used by (1)