def h.eg_del_same.c

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

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/hmap.bend as M

2299def h.eg_del_same.c(
2300  ~K: Data, ~V: Data, ~eq: K -> K -> Bool,
2301  ~sound: @x: K -> @y: K -> {eq(x, y) == True{} : Bool} -> {x == y : K},
2302  +key: K, +val: V, +rest: List<&2, M.Entry<K, V>>, +k: K, b: Bool, eb: {b == eq(k, key) : Bool},
2303  ab: {Laws.hmap_absent(~K, ~V, ~eq, rest, key) == True{} : Bool},
2304  ih: {M.HMap.entries.get(~K, ~V, ~eq, M.HMap.entries.del(~K, ~V, ~eq, rest, k), k) == None{} : Maybe<&2, V>}
2305) -> {M.HMap.entries.get(~K, ~V, ~eq, h.edc(~K, ~V, ~eq, b, key, val, rest, k), k) == None{} : Maybe<&2, V>}:
2306  match b:
2307    case True{}:
2308      h.absent_none(~K, ~V, ~eq, rest, k,
2309        rw(K, z => {Laws.hmap_absent(~K, ~V, ~eq, rest, z) == True{} : Bool}, k, key,
2310          sound(k, key, h.sb(True{}, eq(k, key), eb)), ab))
2311    case False{}:
2312      %eb : {h.egc(~K, ~V, ~eq, _, val, M.HMap.entries.del(~K, ~V, ~eq, rest, k), k) == None{} : Maybe<&2, V>}
2313      ih

Uses (12)

Used by (1)