def glue.wb

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

import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base
import bend-mathlib@0.7.4.0/bool.bend as MBool
import bend-kit-collections@0.1.4.1/LAWS.bend as Laws
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

1666def glue.wb(
1667  -K: Data, -V: Data, hi: O.OMap<K, V>, +lo: O.OMap<K, V>, -key: K, -val: V,
1668  +e: {WB(K, V, O.OBin{0, key, val, lo, hi}) == True{} : Bool}
1669) -> {PW(K, V, Nat.add(W(K, V, lo), W(K, V, hi)), Laws.g_glue(K, V, lo, hi)) == True{} : Bool}:
1670  match hi:
1671    case O.OTip{}:
1672      MBool.and_eq_true(WB(K, V, lo), Ord.near(Nat.add(W(K, V, lo), 1n), W(K, V, lo)), wb.l(K, V, key, val, lo, O.OTip{}, e), Ord.neargt.w0(W(K, V, lo)))
1673    case O.OBin{s, +k, +v, +hl, +hh}:
1674      +hi = {O.OBin{0, k, v, hl, hh} : O.OMap<K, V>}
1675      glue.fin.wb(K, V, Laws.g_pop_min(K, V, hl, k, v, hh), lo, hi,
1676        wb.ok(K, V, key, val, lo, hi, e), wb.l(K, V, key, val, lo, hi, e),
1677        pm.wb(K, V, hl, k, v, hh, wb.h(K, V, key, val, lo, hi, e)))

Uses (16)

Used by (1)