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)))