def wr.m2

bend-osdev-word64@0.1.1.0 · PROOF_mul.bend:134

import bend-osdev-word64@0.1.1.0/PROOF_mul.bend as PROOFMul
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL

134def wr.m2(+x0: Nat, +x1: Nat) -> {Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n))), Nat.add(U.U32Nat.dbl(x0, 1n), x1)) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}:
135  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), Nat.double(U.U32Nat.dbl(x0, 1n)), Equal.sym(Nat, Nat.double(U.U32Nat.dbl(x0, 1n)), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), UL.nat_double(U.U32Nat.dbl(x0, 1n)))) : {Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), _), Nat.add(U.U32Nat.dbl(x0, 1n), x1)) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
136  %Equal.sym(Nat, U.U32Nat.dbl(1n, U.U32Nat.dbl(x0, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), UL.dbl_comm(1n, x0, 1n)) : {Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), _), Nat.add(U.U32Nat.dbl(x0, 1n), x1)) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
137  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, 1n), x1), Nat.add(x1, U.U32Nat.dbl(x0, 1n)), UL.nat_add_comm(U.U32Nat.dbl(x0, 1n), x1)) : {Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
138  %Equal.sym(Nat, Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Nat.add(x1, U.U32Nat.dbl(x0, 1n))), Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), Nat.add(x1, U.U32Nat.dbl(x0, 1n)))), UL.nat_add_assoc(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), Nat.add(x1, U.U32Nat.dbl(x0, 1n)))) : {_ == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
139  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), Nat.add(x1, U.U32Nat.dbl(x0, 1n))), Nat.add(x1, Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(x0, 1n))), UL.nat_add_left_comm(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), x1, U.U32Nat.dbl(x0, 1n))) : {Nat.add(U.U32Nat.dbl(x0, 1n), _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
140  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(x0, 1n)), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), UL.nat_add_comm(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(x0, 1n))) : {Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(x1, _)) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
141  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(x1, Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))))), Nat.add(x1, Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))))), UL.nat_add_left_comm(U.U32Nat.dbl(x0, 1n), x1, Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))))) : {_ == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
142  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)))), Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Equal.sym(Nat, Nat.add(Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Nat.add(U.U32Nat.dbl(x0, 1n), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)))), UL.nat_add_assoc(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))))) : {Nat.add(x1, _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
143  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), Nat.double(U.U32Nat.dbl(x0, 1n)), Equal.sym(Nat, Nat.double(U.U32Nat.dbl(x0, 1n)), Nat.add(U.U32Nat.dbl(x0, 1n), U.U32Nat.dbl(x0, 1n)), UL.nat_double(U.U32Nat.dbl(x0, 1n)))) : {Nat.add(x1, Nat.add(_, U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)))) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
144  %Equal.sym(Nat, U.U32Nat.dbl(1n, U.U32Nat.dbl(x0, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), UL.dbl_comm(1n, x0, 1n)) : {Nat.add(x1, Nat.add(_, U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)))) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
145  %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Nat.double(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Equal.sym(Nat, Nat.double(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), Nat.add(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), UL.nat_double(U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))))) : {Nat.add(x1, _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
146  %Equal.sym(Nat, U.U32Nat.dbl(1n, U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, 1n))), U.U32Nat.dbl(x0, U.U32Nat.dbl(1n, U.U32Nat.dbl(1n, 1n))), UL.dbl_comm(1n, x0, U.U32Nat.dbl(1n, 1n))) : {Nat.add(x1, _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
147  %Equal.sym(Nat, U.U32Nat.dbl(1n, U.U32Nat.dbl(1n, 1n)), U.U32Nat.dbl(Nat.add(1n, 1n), 1n), UL.dbl_dbl(1n, 1n, 1n)) : {Nat.add(x1, U.U32Nat.dbl(x0, _)) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
148  %Equal.sym(Nat, U.U32Nat.dbl(x0, U.U32Nat.dbl(2n, 1n)), U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n)), Equal.sym(Nat, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n)), U.U32Nat.dbl(x0, U.U32Nat.dbl(2n, 1n)), UL.dbl_comm(2n, x0, 1n))) : {Nat.add(x1, _) == Nat.add(x1, U.U32Nat.dbl(2n, U.U32Nat.dbl(x0, 1n))) : Nat}
149  {==}

Uses (11)

Used by (1)