~/bend-docscommunity

proofs/crypto/blake/blake3/compress.bend checks

raw source on the hub · import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend as Compress

4 imports
import Base
import ../../../../src/crypto/blake/blake3/types.bend as T
import ../../../../src/crypto/blake/blake3/compress.bend as C
import ../../../../spec/crypto/blake/blake3.bend as S

Laws

law round_correct provedsource · line 19 · raw

@+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.round(s, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.round(st_list(s), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>}

One round, by evaluation on a symbolic state.

law step provedsource · line 45 · raw

@+k:Nat -> @+x:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(1n+k, st_list(x), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(k, st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.round(x, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)), [m2, m6, m3, m10, m7, m0, m4, m13, m1, m11, m12, m5, m9, m14, m15, m8]) : List<&2, U32>}

One round of the specification's loop, with the permutation applied to the message words.

law rounds7_correct provedsource · line 70 · raw

@+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.rounds7(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.B{m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15})) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(7n, st_list(s), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>}

law fold_correct provedsource · line 101 · raw

@+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.fold(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.output(st_list(s)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV}

law init_correct provedsource · line 109 · raw

@+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @+t:U32 -> @+len:U32 -> @+flags:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.init(c, t, len, flags)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.init(c, t, len, flags) : List<&2, U32>}

law compress_correct provedsource · line 120 · raw

@+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @+t:U32 -> @+len:U32 -> @+flags:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.compress(c, b, t, len, flags) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.compress(c, b, t, len, flags) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV}

Definitions

def st_list source · line 14 · raw

@s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> List<&2, U32>