def x1_v

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/secp256k1/prec.bend:114

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/prec.bend as Prec
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/field.bend as F
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/ecdsa.bend as E
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/consts.bend as K
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/fieldops.bend as FO
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/rconst.bend as RC

114def x1_v(+one: Nat, +h1: {one == 1n : Nat}, +r: List<&2, Nat>, +hr: {FS.reduced(one, FS.order(one), r) == True{} : Bool}) -> {FS.value(one, E.rn_fe(r)) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}:
115  +hs = FO.sub_r(one, h1, r, E.cn_fe(), rp_red(one, h1, r, hr), cn_red(one, h1))
116  %Equal.sym(Nat, FS.value(one, F.add(F.sub(r, E.cn_fe()), E.cp_fe())), FS.madd(FS.prime(one), FS.value(one, F.sub(r, E.cn_fe())), FS.value(one, E.cp_fe())), FO.add_v(one, h1, F.sub(r, E.cn_fe()), E.cp_fe(), hs, cp_red(one, h1))) : {_ == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
117  %Equal.sym(Nat, FS.value(one, F.sub(r, E.cn_fe())), FS.msub(FS.prime(one), FS.value(one, r), FS.value(one, E.cn_fe())), FO.sub_v(one, h1, r, E.cn_fe(), rp_red(one, h1, r, hr), cn_red(one, h1))) : {FS.madd(FS.prime(one), _, FS.value(one, E.cp_fe())) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
118  %Equal.sym(Nat, FS.value(one, E.cn_fe()), FS.cn(one), RC.cn_fe_v(one)) : {FS.madd(FS.prime(one), FS.msub(FS.prime(one), FS.value(one, r), _), FS.value(one, E.cp_fe())) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
119  %Equal.sym(Nat, FS.value(one, E.cp_fe()), FS.cp(one), RC.cp_fe_v(one)) : {FS.madd(FS.prime(one), FS.msub(FS.prime(one), FS.value(one, r), FS.cn(one)), _) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
120  %Equal.sym(Nat, FS.prime(one), 1n+K.pp(one), K.prime_eq(one, h1)) : {FS.madd(_, FS.msub(FS.prime(one), FS.value(one, r), FS.cn(one)), FS.cp(one)) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
121  %Equal.sym(Nat, FS.prime(one), 1n+K.pp(one), K.prime_eq(one, h1)) : {FS.madd(1n+K.pp(one), FS.msub(_, FS.value(one, r), FS.cn(one)), FS.cp(one)) == Nat.mod(Nat.add(FS.value(one, r), 1n+K.np(one)), 1n+K.pp(one)) : Nat}
122  RC.rn_val(FS.value(one, r), 1n+K.np(one), K.pp(one), FS.cn(one), FS.cp(one), RC.pn_sum(one, h1), RC.cn_lt_p(one, h1))

Uses (33)

Used by (2)