def cbn_add

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/curve25519/mulw.bend:29

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/curve25519/mulw.bend as Mulw
import Base
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/curve25519/num.bend as M
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/curve25519/poly.bend as PL

29def cbn_add(+a: Nat, +b: Nat, +k: Nat) -> {PL.cbn(Nat.add(a, b), k) == Nat.add(PL.cbn(a, k), PL.cbn(b, k)) : Nat}:
30  match a:
31    case 0n:
32      {==}
33    case 1n+ +q:
34      Equal.trans(Nat, Nat.add(k, PL.cbn(Nat.add(q, b), k)), Nat.add(k, Nat.add(PL.cbn(q, k), PL.cbn(b, k))), Nat.add(Nat.add(k, PL.cbn(q, k)), PL.cbn(b, k)), M.cong_r(k, PL.cbn(Nat.add(q, b), k), Nat.add(PL.cbn(q, k), PL.cbn(b, k)), cbn_add(q, b, k)), Equal.sym(Nat, Nat.add(Nat.add(k, PL.cbn(q, k)), PL.cbn(b, k)), Nat.add(k, Nat.add(PL.cbn(q, k), PL.cbn(b, k))), NA.add_assoc(k, PL.cbn(q, k), PL.cbn(b, k))))

Uses (7)

Used by (1)