def h.split_same
bend-kit-collections@0.1.4.1 · PROOF.bend:2939
import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base
import bend-kit-collections@0.1.4.1/hmap.bend as M
2939def h.split_same(
2940 ~K: Data, ~V: Data, ~eq: K -> K -> Bool, ~refl: @x: K -> {eq(x, x) == True{} : Bool},
2941 n: Nat, +mask: U32, +o: U32, +es: List<&2, M.Entry<K, V>>, +hk: U32, +k: K, +v: V,
2942 +ob: {h.onebit(mask) == True{} : Bool}
2943) -> {h.G(~K, ~V, ~eq, n, mask, h.S(~K, ~V, ~eq, n, mask, o, es, hk, k, v), hk, k) == Some{v} : Maybe<&2, V>}:
2944 match n:
2945 case 0n:
2946 h.eg_put_same(~K, ~V, ~eq, ~refl, es, k, v)
2947 case 1n+(+p):
2948 h.split_same.b(~K, ~V, ~eq, p, mask, o, es, hk, k, v, ob,
2949 U32.is_eq((o .&. mask : U32), (hk .&. mask : U32)), U32.is_eq((o .&. mask : U32), 0), {==}, {==},
2950 h.split_same(~K, ~V, ~eq, ~refl, p, (mask << 1n : U32), o, es, hk, k, v, h.onebit_shl(mask, ob)),
2951 h.fresh_get(~K, ~V, ~eq, ~refl, p, (mask << 1n : U32), hk, k, v))