def h.eg_none_hashed

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

import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base
import bend-mathlib@0.7.4.0/bool.bend as MBool
import bend-kit-collections@0.1.4.1/LAWS.bend as Laws
import bend-kit-collections@0.1.4.1/hmap.bend as M

2164def h.eg_none_hashed(
2165  ~K: Data, ~V: Data, ~hash: K -> U32, ~eq: K -> K -> Bool,
2166  ~sound: @x: K -> @y: K -> {eq(x, y) == True{} : Bool} -> {x == y : K},
2167  xs: List<&2, M.Entry<K, V>>, +o: U32, +k: K, +hk: {U32.is_eq(o, hash(k)) == False{} : Bool},
2168  hs: {Laws.hmap_hashed(~K, ~V, ~hash, xs, o) == True{} : Bool}
2169) -> {M.HMap.entries.get(~K, ~V, ~eq, xs, k) == None{} : Maybe<&2, V>}:
2170  match xs:
2171    case Nil{}:
2172      {==}
2173    case Con{M.Entry{+key, +val}, +rest}:
2174      +hs = hs
2175      h.eg_none_hashed.c(~K, ~V, ~hash, ~eq, ~sound, key, val, rest, o, k, hk,
2176        MBool.eq_true_of_and_left(U32.is_eq(o, hash(key)), Laws.hmap_hashed(~K, ~V, ~hash, rest, o), hs),
2177        eq(k, key), {==},
2178        h.eg_none_hashed(~K, ~V, ~hash, ~eq, ~sound, rest, o, k, hk,
2179          MBool.eq_true_of_and_right(U32.is_eq(o, hash(key)), Laws.hmap_hashed(~K, ~V, ~hash, rest, o), hs)))

Uses (11)

Used by (2)