def wr.b2
bend-osdev-word64@0.1.1.0 · PROOF_bits.bend:114
import bend-osdev-word64@0.1.1.0/PROOF_bits.bend as PROOFBits
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
114def wr.b2(+x0: Nat, +x1: Nat, +x2: Nat, +x3: Nat) -> {Nat.add(Nat.add(x0, U.U32Nat.dbl(32n, x1)), Nat.double(Nat.add(x2, U.U32Nat.dbl(32n, x3)))) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}:
115 %Equal.sym(Nat, Nat.double(Nat.add(x2, U.U32Nat.dbl(32n, x3))), Nat.add(Nat.add(x2, U.U32Nat.dbl(32n, x3)), Nat.add(x2, U.U32Nat.dbl(32n, x3))), UL.nat_double(Nat.add(x2, U.U32Nat.dbl(32n, x3)))) : {Nat.add(Nat.add(x0, U.U32Nat.dbl(32n, x1)), _) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
116 %Equal.sym(Nat, Nat.add(Nat.add(x2, U.U32Nat.dbl(32n, x3)), Nat.add(x2, U.U32Nat.dbl(32n, x3))), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), Nat.add(x2, U.U32Nat.dbl(32n, x3)))), UL.nat_add_assoc(x2, U.U32Nat.dbl(32n, x3), Nat.add(x2, U.U32Nat.dbl(32n, x3)))) : {Nat.add(Nat.add(x0, U.U32Nat.dbl(32n, x1)), _) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
117 %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(32n, x3), Nat.add(x2, U.U32Nat.dbl(32n, x3))), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))), UL.nat_add_left_comm(U.U32Nat.dbl(32n, x3), x2, U.U32Nat.dbl(32n, x3))) : {Nat.add(Nat.add(x0, U.U32Nat.dbl(32n, x1)), Nat.add(x2, _)) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
118 %Equal.sym(Nat, Nat.add(Nat.add(x0, U.U32Nat.dbl(32n, x1)), Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), Nat.add(x0, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))))), UL.nat_add_assoc(x0, U.U32Nat.dbl(32n, x1), Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))))) : {_ == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
119 %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), UL.nat_add_left_comm(U.U32Nat.dbl(32n, x1), x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))) : {Nat.add(x0, _) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
120 %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), UL.nat_add_left_comm(U.U32Nat.dbl(32n, x1), x2, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))) : {Nat.add(x0, Nat.add(x2, _)) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
121 %Equal.sym(Nat, Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), Nat.add(Nat.add(x2, x2), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), Equal.sym(Nat, Nat.add(Nat.add(x2, x2), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), Nat.add(x2, Nat.add(x2, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), UL.nat_add_assoc(x2, x2, Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))))) : {Nat.add(x0, _) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
122 %Equal.sym(Nat, Nat.add(x0, Nat.add(Nat.add(x2, x2), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), Nat.add(Nat.add(x0, Nat.add(x2, x2)), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), Equal.sym(Nat, Nat.add(Nat.add(x0, Nat.add(x2, x2)), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))), Nat.add(x0, Nat.add(Nat.add(x2, x2), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3))))), UL.nat_add_assoc(x0, Nat.add(x2, x2), Nat.add(U.U32Nat.dbl(32n, x1), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)))))) : {_ == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
123 %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)), U.U32Nat.dbl(32n, Nat.add(x3, x3)), Equal.sym(Nat, U.U32Nat.dbl(32n, Nat.add(x3, x3)), Nat.add(U.U32Nat.dbl(32n, x3), U.U32Nat.dbl(32n, x3)), UL.dbl_add(32n, x3, x3))) : {Nat.add(Nat.add(x0, Nat.add(x2, x2)), Nat.add(U.U32Nat.dbl(32n, x1), _)) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
124 %Equal.sym(Nat, Nat.add(U.U32Nat.dbl(32n, x1), U.U32Nat.dbl(32n, Nat.add(x3, x3))), U.U32Nat.dbl(32n, Nat.add(x1, Nat.add(x3, x3))), Equal.sym(Nat, U.U32Nat.dbl(32n, Nat.add(x1, Nat.add(x3, x3))), Nat.add(U.U32Nat.dbl(32n, x1), U.U32Nat.dbl(32n, Nat.add(x3, x3))), UL.dbl_add(32n, x1, Nat.add(x3, x3)))) : {Nat.add(Nat.add(x0, Nat.add(x2, x2)), _) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
125 %Equal.sym(Nat, Nat.add(x3, x3), Nat.double(x3), Equal.sym(Nat, Nat.double(x3), Nat.add(x3, x3), UL.nat_double(x3))) : {Nat.add(Nat.add(x0, Nat.add(x2, x2)), U.U32Nat.dbl(32n, Nat.add(x1, _))) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
126 %Equal.sym(Nat, Nat.add(x2, x2), Nat.double(x2), Equal.sym(Nat, Nat.double(x2), Nat.add(x2, x2), UL.nat_double(x2))) : {Nat.add(Nat.add(x0, _), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) == Nat.add(Nat.add(x0, Nat.double(x2)), U.U32Nat.dbl(32n, Nat.add(x1, Nat.double(x3)))) : Nat}
127 {==}