buffer_proof.bend checks
raw source on the hub · import 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend as Buffer_proof
9 imports
import Base import ./fips.bend as F import ./buffer.bend as B import ./packed.bend as P import ./packed_spec.bend as R import ./packed_proof.bend as Proof import ./packed_array_proof.bend as A import ./state.bend as S import ./sha256.bend as SHA
Laws
law correct provedsource · line 11 · raw
@a:Array<U32> -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.result(0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash(a, length)) : Maybe<&1, Array<U32>>}
law digest_size provedsource · line 20 · raw
@s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {Pair.snd(Array<U32>, U32, Array.size(U32, 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.digest(s))) == 8 : U32}
law digest_words provedsource · line 34 · raw
@+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {words(0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.digest(s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest(s) : List<&2, U32>}
law observe_digest provedsource · line 48 · raw
@+r:Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State> -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.result(r)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.digest_result(r) : Maybe<&2, List<&2, U32>>}
law full_reified provedsource · line 59 · 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>}> -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>}
law full_correct provedsource · line 77 · raw
@a:Array<U32> -> @+length:Nat -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>}
Definitions
def words source · line 29 · raw
@a:Array<U32> -> List<&2, U32>
Proof-only observation; never called by the buffer hashing API.
def observe source · line 43 · raw
@r:Maybe<&1, Array<U32>> -> Maybe<&2, List<&2, U32>>
Full public-result observation against the independent packed specification.