def dl
bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/secp256k1/pdec.bend:117
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/pdec.bend as Pdec
import Base
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/field.bend as FS
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/curve.bend as CV
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/bytes.bend as B
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/point.bend as P
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/penc.bend as PE
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/blist.bend as BL
117def dl(+one: Nat, +h1: {one == 1n : Nat}, +bs: List<&2, U32>, c33: Bool, c65: Bool, +h33: {B.has_len(33n, bs) == c33 : Bool}, +h65: {B.has_len(65n, bs) == c65 : Bool}) -> {PE.mpv(one, P.decode_len(bs, c33, c65)) == CV.decode_len(FS.prime(one), bs, c33, c65) : Maybe<&2, CV.SPoint>}:
118 match c33 c65:
119 case True{} _:
120 %Equal.sym(U32, B.head(bs), CV.head(bs), BL.head_eq(bs)) : {PE.mpv(one, P.decode_33(_, B.tail(bs))) == CV.decode_c(FS.prime(one), CV.head(bs), CV.os2ip(CV.after(1n, bs))) : Maybe<&2, CV.SPoint>}
121 %Equal.sym(List<&2, U32>, B.tail(bs), CV.after(1n, bs), BL.tail_after(bs)) : {PE.mpv(one, P.decode_33(CV.head(bs), _)) == CV.decode_c(FS.prime(one), CV.head(bs), CV.os2ip(CV.after(1n, bs))) : Maybe<&2, CV.SPoint>}
122 d33(one, h1, CV.head(bs), CV.after(1n, bs), BL.len_tail(32n, bs, h33))
123 case False{} True{}:
124 %Equal.sym(U32, B.head(bs), CV.head(bs), BL.head_eq(bs)) : {PE.mpv(one, P.decode_65(_, B.tail(bs))) == CV.decode_u(FS.prime(one), CV.head(bs), CV.os2ip(CV.first(32n, CV.after(1n, bs))), CV.os2ip(CV.after(33n, bs))) : Maybe<&2, CV.SPoint>}
125 %Equal.sym(List<&2, U32>, B.tail(bs), CV.after(1n, bs), BL.tail_after(bs)) : {PE.mpv(one, P.decode_65(CV.head(bs), _)) == CV.decode_u(FS.prime(one), CV.head(bs), CV.os2ip(CV.first(32n, CV.after(1n, bs))), CV.os2ip(CV.after(33n, bs))) : Maybe<&2, CV.SPoint>}
126 %Equal.sym(List<&2, U32>, CV.after(33n, bs), CV.after(32n, CV.after(1n, bs)), BL.after33(bs)) : {PE.mpv(one, P.decode_65(CV.head(bs), CV.after(1n, bs))) == CV.decode_u(FS.prime(one), CV.head(bs), CV.os2ip(CV.first(32n, CV.after(1n, bs))), CV.os2ip(_)) : Maybe<&2, CV.SPoint>}
127 d65(one, h1, CV.head(bs), CV.after(1n, bs), BL.len_tail(64n, bs, h65))
128 case False{} False{}:
129 {==}