def addc
bend-collections-laws-math@1.0.0.0 · proofs/math/typed/f64adda.bend:78
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64adda.bend as F64adda
import Base
import bend-collections-laws-math@1.0.0.0/spec/lib/common.bend as C
import bend-collections-laws-math@1.0.0.0/spec/math/w64.bend as SW
import bend-collections-laws-math@1.0.0.0/src/math/w64.bend as X
import bend-collections-laws-math@1.0.0.0/src/math/u64.bend as WU
import bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/nat_algebra.bend as NA
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/w64add.bend as WA
78def addc(+a: WU.U64, +b: WU.U64) -> {SW.value(X.add(a, b)) == SW.value(X.add(b, a)) : Nat}:
79 a1 = WA.add_value(a, b)
80 a2 = WA.add_value(b, a)
81 Equal.trans(Nat, SW.value(X.add(a, b)), C.low(64n, Nat.add(SW.value(a), SW.value(b))), SW.value(X.add(b, a)), a1, Equal.trans(Nat, C.low(64n, Nat.add(SW.value(a), SW.value(b))), C.low(64n, Nat.add(SW.value(b), SW.value(a))), SW.value(X.add(b, a)), Equal.cong(Nat, Nat, z => C.low(64n, z), Nat.add(SW.value(a), SW.value(b)), Nat.add(SW.value(b), SW.value(a)), NA.add_comm(SW.value(a), SW.value(b))), Equal.sym(Nat, SW.value(X.add(b, a)), C.low(64n, Nat.add(SW.value(b), SW.value(a))), a2)))