PROOFChecksum.ckp.head: def of bend-osdev-acpi@0.1.2.0 Import: import bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend as PROOFChecksum Lines 189-196 of bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend&start_line=189&end_line=196 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 def ckp.head(+d: B.Octets, +hd: {Nat.is_le(1n, B.Octets.len(d)) == True{} : Bool}) -> {ckp.ns(B.Octets.to_list(d)) == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(d, 0n), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat}: %BL.octets_take_drop(1n, d) : {ckp.ns(B.Octets.to_list(_)) == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(d, 0n), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} %Equal.sym(List<&2, U32>, B.Octets.to_list(B.Octets.append(B.Octets.take(1n, d), B.Octets.drop(1n, d))), B.append(B.Octets.to_list(B.Octets.take(1n, d)), B.Octets.to_list(B.Octets.drop(1n, d))), BL.octets_append_list(B.Octets.take(1n, d), B.Octets.drop(1n, d))) : {ckp.ns(_) == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(d, 0n), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} %Equal.sym(Nat, ckp.ns(B.append(B.Octets.to_list(B.Octets.take(1n, d)), B.Octets.to_list(B.Octets.drop(1n, d)))), Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(1n, d))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))), ckp.nsapp(B.Octets.to_list(B.Octets.take(1n, d)), B.Octets.to_list(B.Octets.drop(1n, d)))) : {_ == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, B.Octets.at(d, 0n), 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} %BL.octets_at_take(1n, d, 0n, {==}) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(1n, d))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, _, 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} %Equal.sym(Maybe<&2, U32>, B.Octets.at(B.Octets.take(1n, d), 0n), B.at(B.Octets.to_list(B.Octets.take(1n, d)), 0n), BL.octets_at_list(B.Octets.take(1n, d), 0n)) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(1n, d))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) == Nat.add(U32.to_nat(U32.and(255, Maybe.default(&2, U32, _, 0))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} %ckp.one(B.Octets.to_list(B.Octets.take(1n, d)), Equal.trans(Nat, B.len(B.Octets.to_list(B.Octets.take(1n, d))), B.Octets.len(B.Octets.take(1n, d)), 1n, Equal.sym(Nat, B.Octets.len(B.Octets.take(1n, d)), B.len(B.Octets.to_list(B.Octets.take(1n, d))), BL.octets_len_list(B.Octets.take(1n, d))), BL.octets_len_take_le(1n, d, hd))) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(1n, d))), ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) == Nat.add(_, ckp.ns(B.Octets.to_list(B.Octets.drop(1n, d)))) : Nat} {==} Uses (31): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.sym https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.trans https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe.default https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_le https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.to_nat https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend&name=ckp.ns https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend&name=ckp.nsapp https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend&name=ckp.one https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_append_list https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_at_list https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_at_take https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_len_list https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_len_take_le https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_take_drop https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.append https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.at https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.drop https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.len https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.take https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.to_list https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=append https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=at https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=len