PROOF.aria_e0: def of bend-osdev-aria@0.1.0.0 Import: import bend-osdev-aria@0.1.0.0/PROOF.bend as PROOF Lines 6220-6230 of bend-osdev-aria@0.1.0.0/PROOF.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-aria@0.1.0.0/PROOF.bend&start_line=6220&end_line=6230 import Base import bend-osdev-cipher-core@0.1.0.0/LAWS.bend as CoreL import bend-osdev-aria@0.1.0.0/aria.bend as A # each elementary step of the diffusion layer is undone by itself def aria_e0(s: A.LcAriaSt) -> {s == A.aria.e0(A.aria.e0(s)) : A.LcAriaSt}: match s: case A.LcAriaSt{+x0, +x1, +x2, +x3, +x4, +x5, +x6, +x7, +x8, +x9, +x10, +x11, +x12, +x13, +x14, +x15}: %CoreL.word_xor_cancel(8n, x10, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, Word.xor(8n, Word.xor(8n, x1, x15), x15), Word.xor(8n, Word.xor(8n, x2, x15), x15), x3, Word.xor(8n, Word.xor(8n, x4, x15), x15), Word.xor(8n, Word.xor(8n, x5, x15), x15), x6, x7, Word.xor(8n, Word.xor(8n, x8, x15), x15), x9, _, x11, x12, x13, x14, x15} : A.LcAriaSt} %CoreL.word_xor_cancel(8n, x8, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, Word.xor(8n, Word.xor(8n, x1, x15), x15), Word.xor(8n, Word.xor(8n, x2, x15), x15), x3, Word.xor(8n, Word.xor(8n, x4, x15), x15), Word.xor(8n, Word.xor(8n, x5, x15), x15), x6, x7, _, x9, x10, x11, x12, x13, x14, x15} : A.LcAriaSt} %CoreL.word_xor_cancel(8n, x5, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, Word.xor(8n, Word.xor(8n, x1, x15), x15), Word.xor(8n, Word.xor(8n, x2, x15), x15), x3, Word.xor(8n, Word.xor(8n, x4, x15), x15), _, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} : A.LcAriaSt} %CoreL.word_xor_cancel(8n, x4, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, Word.xor(8n, Word.xor(8n, x1, x15), x15), Word.xor(8n, Word.xor(8n, x2, x15), x15), x3, _, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} : A.LcAriaSt} %CoreL.word_xor_cancel(8n, x2, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, Word.xor(8n, Word.xor(8n, x1, x15), x15), _, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} : A.LcAriaSt} %CoreL.word_xor_cancel(8n, x1, x15) : {A.LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} == A.LcAriaSt{x0, _, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} : A.LcAriaSt} {==} Uses (4): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.xor https://jend.leeeet.dev/definition.txt?path=bend-osdev-aria@0.1.0.0/aria.bend&name=LcAriaSt https://jend.leeeet.dev/definition.txt?path=bend-osdev-aria@0.1.0.0/aria.bend&name=aria.e0 https://jend.leeeet.dev/definition.txt?path=bend-osdev-cipher-core@0.1.0.0/LAWS.bend&name=word_xor_cancel