def link_nz_c
bend-collections-laws-math@1.0.0.0 · proofs/lib/words32.bend:39
import bend-collections-laws-math@1.0.0.0/proofs/lib/words32.bend as Words32
import Base
import bend-collections-laws-math@1.0.0.0/proofs/lib/u32alg.bend as A
import bend-collections-laws-math@1.0.0.0/proofs/lib/word.bend as WD
import bend-collections-laws-math@1.0.0.0/proofs/lib/u32div.bend as UD
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-math@1.0.0.0/src/containers/hash_table.bend as H
39def link_nz_c(+one: Nat, +h1: {one == 1n : Nat}, +s: U32, +hs: {Nat.is_lt(1n+UD.v(s), WD.sc(32n, one)) == True{} : Bool}, +c: Bool, +hc: {U32.is_eq(H.link(s), 0) == c : Bool}) -> {c == False{} : Bool}:
40 match c:
41 case False{}:
42 {==}
43 case True{}:
44 +e0 = Equal.cong(U32, Nat, z => UD.v(z), H.link(s), 0, A.eq_of(H.link(s), 0, hc))
45 Empty.absurd({True{} == False{} : Bool}, N.succ_zero(UD.v(s), Equal.trans(Nat, 1n+UD.v(s), UD.v(H.link(s)), 0n, Equal.sym(Nat, UD.v(H.link(s)), 1n+UD.v(s), link_val(one, h1, s, hs)), e0)))