def h.gd_other.br

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

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

3311def h.gd_other.br(
3312  ~K: Data, ~V: Data, ~eq: K -> K -> Bool, +p: Nat, +mask: U32, +lo: M.HMap<K, V>,
3313  +hi: M.HMap<K, V>, +h2: U32, +k2: K, +hk: U32, +k: K, b: Bool,
3314  il: {h.G(~K, ~V, ~eq, p, (mask << 1n : U32), h.D(~K, ~V, ~eq, p, (mask << 1n : U32), lo, h2, k2), hk, k)
3315       == h.G(~K, ~V, ~eq, p, (mask << 1n : U32), lo, hk, k) : Maybe<&2, V>},
3316  ih: {h.G(~K, ~V, ~eq, p, (mask << 1n : U32), h.D(~K, ~V, ~eq, p, (mask << 1n : U32), hi, h2, k2), hk, k)
3317       == h.G(~K, ~V, ~eq, p, (mask << 1n : U32), hi, hk, k) : Maybe<&2, V>}
3318) -> {h.G(~K, ~V, ~eq, 1n+p, mask, h.db(~K, ~V, ~eq, b, p, mask, lo, hi, h2, k2), hk, k)
3319      == h.G(~K, ~V, ~eq, 1n+p, mask, M.HBranch{lo, hi}, hk, k) : Maybe<&2, V>}:
3320  match b:
3321    case True{}:
3322      +dlo = h.D(~K, ~V, ~eq, p, (mask << 1n : U32), lo, h2, k2)
3323      +dhi = h.D(~K, ~V, ~eq, p, (mask << 1n : U32), hi, h2, k2)
3324      +d = U32.is_eq((hk .&. mask : U32), 0)
3325      %h.get_join(~K, ~V, ~eq, p, mask, dlo, hi, hk, k)
3326        : {_ == h.G(~K, ~V, ~eq, 1n+p, mask, M.HBranch{lo, hi}, hk, k) : Maybe<&2, V>}
3327      h.bool_l(Maybe<&2, V>, d, h.G(~K, ~V, ~eq, p, (mask << 1n : U32), dlo, hk, k),
3328        h.G(~K, ~V, ~eq, p, (mask << 1n : U32), lo, hk, k), h.G(~K, ~V, ~eq, p, (mask << 1n : U32), hi, hk, k), il)
3329    case False{}:
3330      +dlo = h.D(~K, ~V, ~eq, p, (mask << 1n : U32), lo, h2, k2)
3331      +dhi = h.D(~K, ~V, ~eq, p, (mask << 1n : U32), hi, h2, k2)
3332      +d = U32.is_eq((hk .&. mask : U32), 0)
3333      %h.get_join(~K, ~V, ~eq, p, mask, lo, dhi, hk, k)
3334        : {_ == h.G(~K, ~V, ~eq, 1n+p, mask, M.HBranch{lo, hi}, hk, k) : Maybe<&2, V>}
3335      h.bool_r(Maybe<&2, V>, d, h.G(~K, ~V, ~eq, p, (mask << 1n : U32), lo, hk, k),
3336        h.G(~K, ~V, ~eq, p, (mask << 1n : U32), dhi, hk, k), h.G(~K, ~V, ~eq, p, (mask << 1n : U32), hi, hk, k), ih)

Uses (14)

Used by (1)