def parity_f

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/secp256k1/fwrap.bend:35

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/fwrap.bend as Fwrap
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/src/crypto/secp256k1/limbs.bend as L
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/field.bend as F
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/limbs.bend as LV
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/listops.bend as LO

35def parity_f(+one: Nat, +h1: {one == 1n : Nat}, +a: List<&2, Nat>) -> {F.parity(a) == Nat.mod(FS.value(one, a), 2n) : Nat}:
36  %Equal.sym(Nat, Nat.mod(L.hd0(a), 2n), Nat.mod(LV.ev(a), 2n), LO.parity_v(a)) : {_ == Nat.mod(FS.value(one, a), 2n) : Nat}
37  %Equal.sym(Nat, FS.value(one, a), LV.ev(a), LV.ev_value(one, h1, a)) : {Nat.mod(LV.ev(a), 2n) == Nat.mod(_, 2n) : Nat}
38  {==}

Uses (10)

Used by (7)