def rot_lo.get
bend-kit-collections@0.1.4.1 · PROOF.bend:729
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
729def rot_lo.get(
730 ~K: Data, ~V: Data, ~cmp: K -> K -> Cmp, ~refl: Refl(~K, ~cmp), ~eq: Eq(~K, ~cmp),
731 ~flip: Flip(~K, ~cmp), ~trans: Trans(~K, ~cmp),
732 hi: O.OMap<K, V>, +ub: Maybe<&2, K>, +x: K, +k: K, +v: V, +lo: O.OMap<K, V>,
733 +eh: {Laws.bounded(~K, ~V, ~cmp, hi, Some{k}, ub) == True{} : Bool}
734) -> {g(~K, ~V, ~cmp, O.OMap.rot_lo(K, V, k, v, lo, hi), x)
735 == g(~K, ~V, ~cmp, O.OBin{0, k, v, lo, hi}, x) : Maybe<&2, V>}:
736 match hi:
737 case O.OTip{}:
738 {==}
739 case O.OBin{s, +hk, +hv, +hl, +hh}:
740 rot_lo.pick.get(~K, ~V, ~cmp, ~refl, ~eq, ~flip, ~trans,
741 U32.is_lt((O.OMap.size(K, V, hl) + 1 : U32),
742 (2 * (O.OMap.size(K, V, hh) + 1) : U32)),
743 x, k, v, lo, hk, hv, hl, hh,
744 lt_of(cmp(k, hk), bn.a(~K, ~V, ~cmp, Some{k}, ub, hk, hv, hl, hh, eh)),
745 bn.l(~K, ~V, ~cmp, Some{k}, ub, hk, hv, hl, hh, eh))