def pk.at
bend-osdev-pkcs7@0.1.0.0 · PROOF.bend:1322
import bend-osdev-pkcs7@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-bytes@0.1.1.0/LAWS.bend as BL
import bend-osdev-pkcs7@0.1.0.0/pkcs7.bend as P
1322
1323def pk.at(+m: B.Octets, +p1: Nat) -> {B.Octets.at(B.Octets.append(m, pk.pad(p1)), Nat.add(B.Octets.len(m), p1)) == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}:
1324 %Equal.sym(Maybe<&2, U32>, B.Octets.at(B.Octets.append(m, pk.pad(p1)), Nat.add(B.Octets.len(m), p1)), B.Octets.at(pk.pad(p1), p1), BL.octets_at_append_add(m, pk.pad(p1), p1)) : {_ == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}
1325 %Equal.sym(Maybe<&2, U32>, B.Octets.at(pk.pad(p1), p1), B.at(B.Octets.to_list(pk.pad(p1)), p1), BL.octets_at_list(pk.pad(p1), p1)) : {_ == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}
1326 %Equal.sym(List<&2, U32>, B.Octets.to_list(pk.pad(p1)), B.mask(P.pkcs7.fill(1n+p1, U32.from_nat(1n+p1))), BL.octets_to_of(P.pkcs7.fill(1n+p1, U32.from_nat(1n+p1)))) : {B.at(_, p1) == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}
1327 %Equal.sym(List<&2, U32>, B.mask(P.pkcs7.fill(1n+p1, U32.from_nat(1n+p1))), P.pkcs7.fill(1n+p1, B.byte(U32.from_nat(1n+p1))), pk.mask_fill(1n+p1, U32.from_nat(1n+p1))) : {B.at(_, p1) == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}
1328 %Equal.sym(List<&2, U32>, B.drop(p1, P.pkcs7.fill(1n+p1, B.byte(U32.from_nat(1n+p1)))), Con{B.byte(U32.from_nat(1n+p1)), Nil{}}, pk.drop_fill(p1, B.byte(U32.from_nat(1n+p1)))) : {B.at.head(_) == Some{B.byte(U32.from_nat(1n+p1))} : Maybe<&2, U32>}
1329 %pk.bb(U32.from_nat(1n+p1)) : {Some{B.byte(B.byte(U32.from_nat(1n+p1)))} == Some{_} : Maybe<&2, U32>}
1330 {==}