def h.elen_put_new.c

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

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

2184def h.elen_put_new.c(
2185  ~K: Data, ~V: Data, ~eq: K -> K -> Bool, +key: K, +val: V,
2186  +rest: List<&2, M.Entry<K, V>>, +k: K, +v: V, b: Bool,
2187  miss: {h.egc(~K, ~V, ~eq, b, val, rest, k) == None{} : Maybe<&2, V>},
2188  ih: {M.HMap.entries.get(~K, ~V, ~eq, rest, k) == None{} : Maybe<&2, V>}
2189    -> {h.len(K, V, M.HMap.entries.put(~K, ~V, ~eq, rest, k, v)) == 1n+h.len(K, V, rest) : Nat}
2190) -> {h.len(K, V, h.epc(~K, ~V, ~eq, b, key, val, rest, k, v)) == 1n+1n+h.len(K, V, rest) : Nat}:
2191  match b:
2192    case True{}:
2193      h.some_none({h.len(K, V, M.Entry{key, v} <> rest) == 1n+1n+h.len(K, V, rest) : Nat}, V, val, miss)
2194    case False{}:
2195      Equal.cong(Nat, Nat, x => 1n+x, h.len(K, V, M.HMap.entries.put(~K, ~V, ~eq, rest, k, v)),
2196        1n+h.len(K, V, rest), ih(miss))

Uses (12)

Used by (1)