PROOFChecksum.ckp.go: def of bend-osdev-acpi@0.1.2.0 Import: import bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend as PROOFChecksum Lines 148-160 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=148&end_line=160 import Base import bend-osdev-u32@0.1.0.0/u32.bend as U import bend-osdev-u32@0.1.0.0/LAWS.bend as UL import bend-osdev-acpi@0.1.2.0/checksum.bend as C def ckp.go(+xs: List<&2, U32>, +acc: U32) -> {U.U32Nat.low(8n, U32.to_nat(C.ck.sum.go(xs, acc))) == U.U32Nat.low(8n, Nat.add(U32.to_nat(acc), ckp.ns(xs))) : Nat}: match xs: case Nil{}: %Equal.sym(Nat, Nat.add(U32.to_nat(acc), 0n), U32.to_nat(acc), UL.nat_add_zero(U32.to_nat(acc))) : {U.U32Nat.low(8n, U32.to_nat(acc)) == U.U32Nat.low(8n, _) : Nat} {==} case Con{+h, +t}: %Equal.sym(Nat, U.U32Nat.low(8n, U32.to_nat(C.ck.sum.go(t, U32.add(acc, U32.and(255, h))))), U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))), ckp.go(t, U32.add(acc, U32.and(255, h)))) : {_ == U.U32Nat.low(8n, Nat.add(U32.to_nat(acc), Nat.add(U32.to_nat(U32.and(255, h)), ckp.ns(t)))) : Nat} %UL.nat_add_assoc(U32.to_nat(acc), U32.to_nat(U32.and(255, h)), ckp.ns(t)) : {U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))) == U.U32Nat.low(8n, _) : Nat} %UL.u32_add_wrap(acc, U32.and(255, h)) : {U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))) == U.U32Nat.low(8n, Nat.add(_, ckp.ns(t))) : Nat} %Equal.sym(Nat, Nat.add(Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc)))), ckp.ns(t)), Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), Nat.add(U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc))), ckp.ns(t))), UL.nat_add_assoc(U32.to_nat(U32.add(acc, U32.and(255, h))), U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc))), ckp.ns(t))) : {U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))) == U.U32Nat.low(8n, _) : Nat} %UL.nat_add_comm(ckp.ns(t), U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc)))) : {U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))) == U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), _)) : Nat} %UL.nat_add_assoc(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t), U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc)))) : {U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))) == U.U32Nat.low(8n, _) : Nat} Equal.sym(Nat, U.U32Nat.low(8n, Nat.add(Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t)), U.U32Nat.dbl(32n, U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc))))), U.U32Nat.low(8n, Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t))), ckp.l2(Nat.add(U32.to_nat(U32.add(acc, U32.and(255, h))), ckp.ns(t)), U.U32Nat.bit(U32.is_lt(U32.add(acc, U32.and(255, h)), acc)))) Uses (19): 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=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=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add 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.is_lt 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.l2 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/checksum.bend&name=ck.sum.go https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=nat_add_assoc https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=nat_add_comm https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=nat_add_zero https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=u32_add_wrap https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/u32.bend&name=U32Nat.bit https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/u32.bend&name=U32Nat.dbl https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/u32.bend&name=U32Nat.low