def ckp.split

bend-osdev-acpi@0.1.2.0 · PROOF_checksum.bend:217

import bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend as PROOFChecksum
import Base
import bend-osdev-bytes@0.1.1.1/bytes.bend as B
import bend-osdev-bytes@0.1.1.1/LAWS.bend as BL
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL

217def ckp.split(+i: Nat, +o: B.Octets, +h: {Nat.is_lt(i, B.Octets.len(o)) == True{} : Bool}) -> {ckp.ns(B.Octets.to_list(o)) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}:
218  %BL.octets_take_drop(i, o) : {ckp.ns(B.Octets.to_list(_)) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
219  %Equal.sym(List<&2, U32>, B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), B.Octets.drop(i, o))), B.append(B.Octets.to_list(B.Octets.take(i, o)), B.Octets.to_list(B.Octets.drop(i, o))), BL.octets_append_list(B.Octets.take(i, o), B.Octets.drop(i, o))) : {ckp.ns(_) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
220  %Equal.sym(Nat, ckp.ns(B.append(B.Octets.to_list(B.Octets.take(i, o)), B.Octets.to_list(B.Octets.drop(i, o)))), Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), ckp.ns(B.Octets.to_list(B.Octets.drop(i, o)))), ckp.nsapp(B.Octets.to_list(B.Octets.take(i, o)), B.Octets.to_list(B.Octets.drop(i, o)))) : {_ == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
221  %Equal.sym(Nat, ckp.ns(B.Octets.to_list(B.Octets.drop(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(B.Octets.drop(i, o), 0n), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, B.Octets.drop(i, o))))), ckp.head(B.Octets.drop(i, o), ckp.hdd(i, o, h))) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), _) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
222  %Equal.sym(Maybe<&2, U32>, B.Octets.at(B.Octets.drop(i, o), 0n), B.Octets.at(o, Nat.add(i, 0n)), BL.octets_at_drop(i, o, 0n)) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, _, 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, B.Octets.drop(i, o)))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
223  %Equal.sym(Nat, Nat.add(i, 0n), i, UL.nat_add_zero(i)) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, _), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, B.Octets.drop(i, o)))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
224  %Equal.sym(B.Octets, B.Octets.drop(1n, B.Octets.drop(i, o)), B.Octets.drop(Nat.add(i, 1n), o), BL.octets_drop_drop(i, 1n, o)) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(_)))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
225  %UL.nat_add_comm(1n, i) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(_, o))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}
226  {==}

Uses (29)

Used by (1)