def four_h

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/secp256k1/fieldpow.bend:305

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/secp256k1/fieldpow.bend as Fieldpow
import Base
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/nat_algebra.bend as NA

305def four_h(+h: Nat) -> {Nat.add(Nat.add(h, h), Nat.add(h, h)) == Nat.add(Nat.mul(h, 4n), 0n) : Nat}:
306  %Equal.sym(Nat, Nat.add(Nat.add(h, h), Nat.add(h, h)), Nat.add(h, Nat.add(h, Nat.add(h, h))), NA.add_assoc(h, h, Nat.add(h, h))) : {_ == Nat.add(Nat.mul(h, 4n), 0n) : Nat}
307  %Equal.sym(Nat, Nat.mul(h, 4n), Nat.add(h, Nat.mul(h, 3n)), NA.mul_succ(h, 3n)) : {Nat.add(h, Nat.add(h, Nat.add(h, h))) == Nat.add(_, 0n) : Nat}
308  %Equal.sym(Nat, Nat.mul(h, 3n), Nat.add(h, Nat.mul(h, 2n)), NA.mul_succ(h, 2n)) : {Nat.add(h, Nat.add(h, Nat.add(h, h))) == Nat.add(Nat.add(h, _), 0n) : Nat}
309  %Equal.sym(Nat, Nat.mul(h, 2n), Nat.add(h, Nat.mul(h, 1n)), NA.mul_succ(h, 1n)) : {Nat.add(h, Nat.add(h, Nat.add(h, h))) == Nat.add(Nat.add(h, Nat.add(h, _)), 0n) : Nat}
310  %Equal.sym(Nat, Nat.mul(h, 1n), h, NA.mul_one(h)) : {Nat.add(h, Nat.add(h, Nat.add(h, h))) == Nat.add(Nat.add(h, Nat.add(h, Nat.add(h, _))), 0n) : Nat}
311  %Equal.sym(Nat, Nat.add(Nat.add(h, Nat.add(h, Nat.add(h, h))), 0n), Nat.add(h, Nat.add(h, Nat.add(h, h))), NA.add_zero(Nat.add(h, Nat.add(h, Nat.add(h, h))))) : {Nat.add(h, Nat.add(h, Nat.add(h, h))) == _ : Nat}
312  {==}

Uses (8)

Used by (1)