~/bend-docscommunity

packed_proof.bend checks

raw source on the hub · import 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend as Packed_proof

10 imports
import Base
import ./core.bend as Runtime
import ./legacy_model.bend as Legacy
import ./packed_array_proof.bend as A
import ./packed.bend as P
import ./packed_spec.bend as R
import ./core_model.bend as C
import ./fips.bend as F
import ./state.bend as S
import ./conformance.bend as Conformance

Laws

law compress_correct provedsource · line 12 · raw

@+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State}

law read16_correct provedsource · line 36 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read16(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 0n, index, False{}, 0n, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read15_correct provedsource · line 62 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read15(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 1n, index, False{}, 0n, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read14_correct provedsource · line 87 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read14(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 2n, index, False{}, 0n, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read13_correct provedsource · line 111 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read13(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 3n, index, False{}, 0n, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read12_correct provedsource · line 134 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read12(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 4n, index, False{}, 0n, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read11_correct provedsource · line 156 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read11(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 5n, index, False{}, 0n, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read10_correct provedsource · line 177 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read10(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 6n, index, False{}, 0n, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read9_correct provedsource · line 197 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read9(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 7n, index, False{}, 0n, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read8_correct provedsource · line 216 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read8(extra, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 8n, index, False{}, 0n, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read7_correct provedsource · line 234 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read7(extra, index, s, w0, w1, w2, w3, w4, w5, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 9n, index, False{}, 0n, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read6_correct provedsource · line 251 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read6(extra, index, s, w0, w1, w2, w3, w4, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 10n, index, False{}, 0n, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read5_correct provedsource · line 267 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read5(extra, index, s, w0, w1, w2, w3, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 11n, index, False{}, 0n, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read4_correct provedsource · line 282 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read4(extra, index, s, w0, w1, w2, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 12n, index, False{}, 0n, 0n, s, [w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read3_correct provedsource · line 296 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read3(extra, index, s, w0, w1, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 13n, index, False{}, 0n, 0n, s, [w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read2_correct provedsource · line 309 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read2(extra, index, s, w0, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 14n, index, False{}, 0n, 0n, s, [w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law read1_correct provedsource · line 321 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read1(extra, index, s, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 15n, index, False{}, 0n, 0n, s, [], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law partial_correct provedsource · line 332 · raw

@+w:U32 -> @+delta:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.partial(w, delta) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.partial(w, delta) : U32}

law pad_choose_correct provedsource · line 344 · raw

@+c:Cmp -> @+w:U32 -> @+delta:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_choose(c, w, delta) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_choose(c, w, delta) : U32}

law pad_word_correct provedsource · line 355 · raw

@+w:U32 -> @+pos:Nat -> @+remain:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w, pos, remain) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_word(w, pos, remain) : U32}

law tail_word_correct provedsource · line 363 · raw

@+short:Bool -> @+w:U32 -> @+pos:Nat -> @+remain:Nat -> @+length:U32 -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(short, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w, pos, remain), length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.length_word(short, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_word(w, pos, remain), length) : U32}

law padded_words_correct provedsource · line 375 · raw

@+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+remain:Nat -> @+total:Nat -> {[0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w0, 0n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w1, 4n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w2, 8n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w3, 12n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w4, 16n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w5, 20n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w6, 24n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w7, 28n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w8, 32n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w9, 36n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w10, 40n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w11, 44n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w12, 48n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w13, 52n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(Nat.is_lt(remain, 56n), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w14, 56n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.len_hi(total)), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(Nat.is_lt(remain, 56n), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w15, 60n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.len_lo(total))] == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.padded_words([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15], 0n, remain, total) : List<&2, U32>}

law pad16_correct provedsource · line 431 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad16(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 0n, index, True{}, remain, total, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad15_correct provedsource · line 467 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad15(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 1n, index, True{}, remain, total, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad14_correct provedsource · line 494 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad14(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 2n, index, True{}, remain, total, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad13_correct provedsource · line 520 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad13(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 3n, index, True{}, remain, total, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad12_correct provedsource · line 545 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad12(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 4n, index, True{}, remain, total, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad11_correct provedsource · line 569 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad11(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 5n, index, True{}, remain, total, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad10_correct provedsource · line 592 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad10(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 6n, index, True{}, remain, total, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad9_correct provedsource · line 614 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad9(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 7n, index, True{}, remain, total, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad8_correct provedsource · line 635 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad8(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 8n, index, True{}, remain, total, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad7_correct provedsource · line 655 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad7(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 9n, index, True{}, remain, total, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad6_correct provedsource · line 674 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad6(extra, index, s, remain, total, w0, w1, w2, w3, w4, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 10n, index, True{}, remain, total, s, [w4, w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad5_correct provedsource · line 692 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad5(extra, index, s, remain, total, w0, w1, w2, w3, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 11n, index, True{}, remain, total, s, [w3, w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad4_correct provedsource · line 709 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad4(extra, index, s, remain, total, w0, w1, w2, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 12n, index, True{}, remain, total, s, [w2, w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad3_correct provedsource · line 725 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad3(extra, index, s, remain, total, w0, w1, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 13n, index, True{}, remain, total, s, [w1, w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad2_correct provedsource · line 740 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad2(extra, index, s, remain, total, w0, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 14n, index, True{}, remain, total, s, [w0], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law pad1_correct provedsource · line 754 · raw

@+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad1(extra, index, s, remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 15n, index, True{}, remain, total, s, [], pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law final_extra_correct provedsource · line 767 · raw

@+extra:Nat -> @+more:Bool -> @+total:Nat -> @pair:Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.final_extra(extra, more, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.final_extra(extra, more, total, pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law blocks_correct provedsource · line 783 · raw

@+extra:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, n, index, remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, n, index, remain, total, pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law blocks_zero_reified provedsource · line 792 · raw

@+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array<U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array<U32>}> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, 0n, index, remain, total, (a, s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, 0n, index, remain, total, (a, s)) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law blocks_step_reified provedsource · line 816 · raw

@+p:Nat -> @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array<U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array<U32>}> -> @recurse:(@pair:Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, p, U32.add(index, 16), remain, total, pair) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, 1n+p, index, remain, total, (a, s)) : Pair(Array<U32>, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}

law hash_unchecked_correct provedsource · line 850 · raw

@a:Array<U32> -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.hash_unchecked(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash_unchecked(a, length) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State}

law checked_correct provedsource · line 861 · raw

@+valid:Bool -> @a:Array<U32> -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.checked(valid, a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.checked(valid, a, length) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>}

law sized_correct provedsource · line 874 · raw

@+length:Nat -> @pair:Pair(Array<U32>, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.sized(length, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sized(length, pair) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>}

law hash_correct provedsource · line 883 · raw

@a:Array<U32> -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.hash(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash(a, length) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>}

law digest_result_correct provedsource · line 891 · raw

@+r:Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.packed_digest(r) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.digest_result(r) : Maybe<&2, List<&2, U32>>}

law sha256_correct provedsource · line 902 · raw

@a:Array<U32> -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_packed(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>}

law sha256_reified provedsource · line 907 · raw

@-a:Array<U32> -> @+length:Nat -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array<U32>}> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_packed(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>}