def del.wb
bend-kit-collections@0.1.4.1 · PROOF.bend:1679
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
1679def del.wb(
1680 ~K: Data, ~V: Data, ~cmp: K -> K -> Cmp, t: O.OMap<K, V>, +k: K,
1681 +wb: {WB(K, V, t) == True{} : Bool}
1682) -> {PW(K, V, W(K, V, t), Laws.g_del(~K, ~V, ~cmp, t, k)) == True{} : Bool}:
1683 match t:
1684 case O.OTip{}:
1685 {==}
1686 case O.OBin{+s, +key, +val, +lo, +hi}:
1687 +ok = wb.ok(K, V, key, val, lo, hi, wb)
1688 +wbl = wb.l(K, V, key, val, lo, hi, wb)
1689 +wbh = wb.h(K, V, key, val, lo, hi, wb)
1690 +n = Nat.add(W(K, V, lo), W(K, V, hi))
1691 cmp.split(O.OMap<K, V>, Bool, x => PW(K, V, n, x), True{}, cmp(k, key),
1692 u => Laws.g_balance(K, V, key, val, Laws.g_del(~K, ~V, ~cmp, lo, k), hi),
1693 u => Laws.g_glue(K, V, lo, hi),
1694 u => Laws.g_balance(K, V, key, val, lo, Laws.g_del(~K, ~V, ~cmp, hi, k)),
1695 e => bal.lo(K, V, key, val, lo, Laws.g_del(~K, ~V, ~cmp, lo, k), hi, ok, wbh,
1696 del.wb(~K, ~V, ~cmp, lo, k, wbl)),
1697 e => glue.wb(K, V, hi, lo, key, val, wb),
1698 e => bal.hi(K, V, key, val, lo, hi, Laws.g_del(~K, ~V, ~cmp, hi, k), ok, wbl,
1699 del.wb(~K, ~V, ~cmp, hi, k, wbh)))