def wscale_xor
bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/aes/gf.bend:189
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/gf.bend as Gf
import Base
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/aes/poly.bend as P
189def wscale_xor(+n: Nat, +c: Bool, +d: Bool, +w: Word(n)) -> {P.wscale(n, Bool.xor(c, d), w) == Word.xor(n, P.wscale(n, c, w), P.wscale(n, d, w)) : Word(n)}:
190 match c d:
191 case True{} True{}:
192 Equal.sym(Word(n), Word.xor(n, w, w), Word.zero(n), xor_self(n, w))
193 case True{} False{}:
194 Equal.sym(Word(n), Word.xor(n, w, Word.zero(n)), w, xor_zero_r(n, w))
195 case False{} True{}:
196 Equal.sym(Word(n), Word.xor(n, Word.zero(n), w), w, xor_zero_l(n, w))
197 case False{} False{}:
198 Equal.sym(Word(n), Word.xor(n, Word.zero(n), Word.zero(n)), Word.zero(n), xor_zero_l(n, Word.zero(n)))