def hm_n1
bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/secp256k1/fwrap.bend:79
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/lib/common.bend as C
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/scalar.bend as S
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/nat_algebra.bend as NA
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/semiring.bend as SR
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/consts.bend as K
79
80def hm_n1(+one: Nat, +h1: {one == 1n : Nat}) -> {Nat.add(1n+(1n+K.np(one)), FS.value(one, S.cm1())) == C.shift(256n, one) : Nat}:
81 +r = C.shift(16n, FS.digits(one, [12233n, 41331n, 16429n, 24516n, 20663n, 8985n, 17745n, 1n]))
82 %Equal.sym(Nat, C.shift(256n, one), Nat.add(1n+K.np(one), FS.cn(one)), Equal.sym(Nat, Nat.add(1n+K.np(one), FS.cn(one)), C.shift(256n, one), K.hm_n(one, h1))) : {Nat.add(1n+1n+K.np(one), Nat.add(Nat.mul(one, 48830n), r)) == _ : Nat}
83 %Equal.sym(Nat, Nat.add(Nat.mul(one, 48831n), r), 1n+Nat.add(Nat.mul(one, 48830n), r), dig1(one, h1, 48830n, r)) : {Nat.add(1n+1n+K.np(one), Nat.add(Nat.mul(one, 48830n), r)) == Nat.add(1n+K.np(one), _) : Nat}
84 %Equal.sym(Nat, 1n+K.np(one), Nat.add(K.np(one), 1n), SR.succ_add(1n, K.np(one))) : {Nat.add(1n+_, Nat.add(Nat.mul(one, 48830n), r)) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
85 %Equal.sym(Nat, 1n+Nat.add(K.np(one), 1n), Nat.add(Nat.add(K.np(one), 1n), 1n), SR.succ_add(1n, Nat.add(K.np(one), 1n))) : {Nat.add(_, Nat.add(Nat.mul(one, 48830n), r)) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
86 %Equal.sym(Nat, Nat.add(Nat.add(K.np(one), 1n), 1n), Nat.add(K.np(one), Nat.add(1n, 1n)), NA.add_assoc(K.np(one), 1n, 1n)) : {Nat.add(_, Nat.add(Nat.mul(one, 48830n), r)) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
87 %Equal.sym(Nat, Nat.add(1n, 1n), 2n, {==}) : {Nat.add(Nat.add(K.np(one), _), Nat.add(Nat.mul(one, 48830n), r)) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
88 %Equal.sym(Nat, Nat.add(Nat.add(K.np(one), 2n), Nat.add(Nat.mul(one, 48830n), r)), Nat.add(K.np(one), Nat.add(2n, Nat.add(Nat.mul(one, 48830n), r))), NA.add_assoc(K.np(one), 2n, Nat.add(Nat.mul(one, 48830n), r))) : {_ == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
89 %Equal.sym(Nat, Nat.add(2n, Nat.add(Nat.mul(one, 48830n), r)), Nat.add(Nat.mul(one, 48830n), Nat.add(2n, r)), NA.add_swap(2n, Nat.mul(one, 48830n), r)) : {Nat.add(K.np(one), _) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
90 %Equal.sym(Nat, Nat.add(2n, r), Nat.add(r, 2n), NA.add_comm(2n, r)) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), _)) == Nat.add(1n+K.np(one), 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
91 %Equal.sym(Nat, 1n+K.np(one), Nat.add(K.np(one), 1n), SR.succ_add(1n, K.np(one))) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(_, 1n+Nat.add(Nat.mul(one, 48830n), r)) : Nat}
92 %Equal.sym(Nat, 1n+Nat.add(Nat.mul(one, 48830n), r), Nat.add(Nat.add(Nat.mul(one, 48830n), r), 1n), SR.succ_add(1n, Nat.add(Nat.mul(one, 48830n), r))) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(Nat.add(K.np(one), 1n), _) : Nat}
93 %Equal.sym(Nat, Nat.add(Nat.add(Nat.mul(one, 48830n), r), 1n), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 1n)), NA.add_assoc(Nat.mul(one, 48830n), r, 1n)) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(Nat.add(K.np(one), 1n), _) : Nat}
94 %Equal.sym(Nat, Nat.add(Nat.add(K.np(one), 1n), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 1n))), Nat.add(K.np(one), Nat.add(1n, Nat.add(Nat.mul(one, 48830n), Nat.add(r, 1n)))), NA.add_assoc(K.np(one), 1n, Nat.add(Nat.mul(one, 48830n), Nat.add(r, 1n)))) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == _ : Nat}
95 %Equal.sym(Nat, Nat.add(1n, Nat.add(Nat.mul(one, 48830n), Nat.add(r, 1n))), Nat.add(Nat.mul(one, 48830n), Nat.add(1n, Nat.add(r, 1n))), NA.add_swap(1n, Nat.mul(one, 48830n), Nat.add(r, 1n))) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(K.np(one), _) : Nat}
96 %Equal.sym(Nat, Nat.add(1n, Nat.add(r, 1n)), Nat.add(r, Nat.add(1n, 1n)), NA.add_swap(1n, r, 1n)) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), _)) : Nat}
97 %Equal.sym(Nat, Nat.add(1n, 1n), 2n, {==}) : {Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, 2n))) == Nat.add(K.np(one), Nat.add(Nat.mul(one, 48830n), Nat.add(r, _))) : Nat}
98 {==}