def rot_hi.get

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

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

851def rot_hi.get(
852  ~K: Data, ~V: Data, ~cmp: K -> K -> Cmp, ~refl: Refl(~K, ~cmp), ~eq: Eq(~K, ~cmp),
853  ~flip: Flip(~K, ~cmp), ~trans: Trans(~K, ~cmp),
854  lo: O.OMap<K, V>, +lb: Maybe<&2, K>, +x: K, +k: K, +v: V, +hi: O.OMap<K, V>,
855  +el: {Laws.bounded(~K, ~V, ~cmp, lo, lb, Some{k}) == True{} : Bool}
856) -> {g(~K, ~V, ~cmp, O.OMap.rot_hi(K, V, k, v, lo, hi), x)
857      == g(~K, ~V, ~cmp, O.OBin{0, k, v, lo, hi}, x) : Maybe<&2, V>}:
858  match lo:
859    case O.OTip{}:
860      {==}
861    case O.OBin{s, +lk, +lv, +ll, +lh}:
862      rot_hi.pick.get(~K, ~V, ~cmp, ~refl, ~eq, ~flip, ~trans,
863        U32.is_lt((O.OMap.size(K, V, lh) + 1 : U32),
864          (2 * (O.OMap.size(K, V, ll) + 1) : U32)),
865        x, k, v, lk, lv, ll, lh, hi,
866        lt_of(cmp(lk, k), bn.b(~K, ~V, ~cmp, lb, Some{k}, lk, lv, ll, lh, el)),
867        bn.h(~K, ~V, ~cmp, lb, Some{k}, lk, lv, ll, lh, el))

Uses (20)

Used by (1)