PROOFChecksum.ckp.fixsum: def of bend-osdev-acpi@0.1.2.0 Import: import bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend as PROOFChecksum Lines 230-242 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=230&end_line=242 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-acpi@0.1.2.0/checksum.bend as C def ckp.fixsum(+i: Nat, +o: B.Octets, +h: {Nat.is_lt(i, B.Octets.len(o)) == True{} : Bool}) -> {ckp.ns(B.Octets.to_list(C.AcpiChecksum.fix(i, o))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat}: %Equal.sym(Bool, Nat.is_lt(i, B.Octets.len(o)), True{}, h) : {ckp.ns(B.Octets.to_list(C.ck.fix.pick(_, i, o))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(B.Octets, B.Octets.concat(Con{B.Octets.take(i, o), [B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o)]}), B.Octets.append(B.Octets.take(i, o), B.Octets.concat([B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o)])), BL.octets_concat_cons(B.Octets.take(i, o), [B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+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(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(B.Octets, B.Octets.concat(Con{B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), [B.Octets.drop(1n+i, o)]}), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.concat([B.Octets.drop(1n+i, o)])), BL.octets_concat_cons(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), [B.Octets.drop(1n+i, o)])) : {ckp.ns(B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), _))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(B.Octets, B.Octets.concat(Con{B.Octets.drop(1n+i, o), Nil{}}), B.Octets.append(B.Octets.drop(1n+i, o), B.Octets.concat(Nil{})), BL.octets_concat_cons(B.Octets.drop(1n+i, o), Nil{})) : {ckp.ns(B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), _)))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(B.Octets, B.Octets.concat(Nil{}), B.Octets.empty(), BL.octets_concat_nil()) : {ckp.ns(B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.append(B.Octets.drop(1n+i, o), _))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(B.Octets, B.Octets.append(B.Octets.drop(1n+i, o), B.Octets.empty()), B.Octets.drop(1n+i, o), BL.octets_append_empty_r(B.Octets.drop(1n+i, o))) : {ckp.ns(B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), _)))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(List<&2, U32>, B.Octets.to_list(B.Octets.append(B.Octets.take(i, o), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o)))), B.append(B.Octets.to_list(B.Octets.take(i, o)), B.Octets.to_list(B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o)))), BL.octets_append_list(B.Octets.take(i, o), B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o)))) : {ckp.ns(_) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(List<&2, U32>, B.Octets.to_list(B.Octets.append(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o))), B.append(B.Octets.to_list(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)])), B.Octets.to_list(B.Octets.drop(1n+i, o))), BL.octets_append_list(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)]), B.Octets.drop(1n+i, o))) : {ckp.ns(B.append(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(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(List<&2, U32>, B.Octets.to_list(B.Octets.of_list([C.AcpiChecksum.byte_for(i, o)])), B.mask([C.AcpiChecksum.byte_for(i, o)]), BL.octets_to_of([C.AcpiChecksum.byte_for(i, o)])) : {ckp.ns(B.append(B.Octets.to_list(B.Octets.take(i, o)), B.append(_, B.Octets.to_list(B.Octets.drop(1n+i, o))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(Nat, ckp.ns(B.append(B.Octets.to_list(B.Octets.take(i, o)), B.append(B.mask([C.AcpiChecksum.byte_for(i, o)]), B.Octets.to_list(B.Octets.drop(1n+i, o))))), Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), ckp.ns(B.append(B.mask([C.AcpiChecksum.byte_for(i, o)]), B.Octets.to_list(B.Octets.drop(1n+i, o))))), ckp.nsapp(B.Octets.to_list(B.Octets.take(i, o)), B.append(B.mask([C.AcpiChecksum.byte_for(i, o)]), B.Octets.to_list(B.Octets.drop(1n+i, o))))) : {_ == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} %Equal.sym(U32, U32.and(255, B.byte(U32.and(255, U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(o), U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0)))))))), U32.and(255, U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(o), U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0)))))), ckp.bb(U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(o), U32.and(255, Maybe.default(&2, U32, B.Octets.at(o, i), 0))))))) : {Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(_), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) == Nat.add(ckp.ns(B.Octets.to_list(B.Octets.take(i, o))), Nat.add(U32.to_nat(C.AcpiChecksum.byte_for(i, o)), ckp.ns(B.Octets.to_list(B.Octets.drop(1n+i, o))))) : Nat} {==} Uses (36): 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=List 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_lt 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.sub 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.bb 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/checksum.bend&name=AcpiChecksum.byte_for https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/checksum.bend&name=AcpiChecksum.fix https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/checksum.bend&name=AcpiChecksum.sum https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.2.0/checksum.bend&name=ck.fix.pick https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_append_empty_r 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_concat_cons https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_concat_nil https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/LAWS.bend&name=octets_to_of 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.concat 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.empty 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.of_list 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=byte https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=mask