def ckw.core

bend-osdev-acpi@0.1.2.0 · PROOF_whole.bend:214

import bend-osdev-acpi@0.1.2.0/PROOF_whole.bend as PROOFWhole
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/error.bend as E
import bend-osdev-acpi@0.1.2.0/header.bend as H
import bend-osdev-acpi@0.1.2.0/checksum.bend as C
import bend-osdev-acpi@0.1.2.0/PROOF_tables.bend as TP
import bend-osdev-acpi@0.1.2.0/PROOF_checksum.bend as CP

214def ckw.core(+s: B.Octets, +l: U32, +r: U32, +c: U32, +o: B.Octets, +t: B.Octets, +orv: U32, +ci: B.Octets, +cr: U32, +sig4: {B.Octets.len(s) == 4n : Nat}, +oem6: {B.Octets.len(o) == 6n : Nat}, +tid8: {B.Octets.len(t) == 8n : Nat}, +cid4: {B.Octets.len(ci) == 4n : Nat}, +rev8: {B.byte(r) == r : U32}, +body: B.Octets, +z: U32, +fit: {Nat.is_le(B.Octets.len(H.AcpiSdt.build(H.AcpiHeader{s, l, r, c, o, t, orv, ci, cr}, body)), U32.to_nat(z)) == True{} : Bool}) -> {H.AcpiSdt.parse(H.AcpiSdt.build(H.AcpiHeader{s, l, r, c, o, t, orv, ci, cr}, body)) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(B.Octets.len(H.AcpiSdt.build(H.AcpiHeader{s, l, r, c, o, t, orv, ci, cr}, body))), r, Maybe.default(&2, U32, B.Octets.at(H.AcpiSdt.build(H.AcpiHeader{s, l, r, c, o, t, orv, ci, cr}, body), 9n), 0), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}:
215  %Equal.sym(B.Octets, H.AcpiSdt.build(H.AcpiHeader{s, l, r, c, o, t, orv, ci, cr}, body), B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body), ckw.bl1(s, l, r, c, o, t, orv, ci, cr, sig4, body)) : {H.AcpiSdt.parse(_) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(B.Octets.len(_)), r, Maybe.default(&2, U32, B.Octets.at(_, 9n), 0), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
216  %TP.tb.lenchk(s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr, sig4, oem6, tid8, cid4, body) : {H.AcpiSdt.parse(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(_), r, Maybe.default(&2, U32, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body), 9n), 0), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
217  %Equal.sym(Maybe<&2, U32>, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body), 9n), Some{C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body))}, ckw.at9(s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), U32.and(255, Maybe.default(&2, U32, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body), 9n), 0))))), o, t, orv, ci, cr, sig4, body)) : {H.AcpiSdt.parse(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, Maybe.default(&2, U32, _, 0), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
218  %Equal.sym(Result<&2, &2, E.AcpiError, B.Octets>, H.AcpiSdt.check(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)), Done{B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)}, ckw.chk(s, r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr, sig4, oem6, tid8, cid4, body, z, ckw.fitq(s, l, r, c, o, t, orv, ci, cr, sig4, oem6, tid8, cid4, body, z, fit), ckw.okq(s, l, r, c, o, t, orv, ci, cr, sig4, oem6, tid8, cid4, body))) : {H.sdt.parse.go(_) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
219  %Equal.sym(Result<&2, &2, E.AcpiError, H.AcpiHeader>, H.AcpiHeader.decode(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)), Done{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), B.byte(r), B.byte(C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body))), o, t, orv, ci, cr}}, ckw.dec(s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr, sig4, oem6, tid8, cid4, body)) : {H.sdt.split(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body), _) == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
220  %Equal.sym(U32, B.byte(r), r, rev8) : {Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), _, B.byte(C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body))), o, t, orv, ci, cr}, B.Octets.drop(36n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body))}} == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
221  %Equal.sym(U32, B.byte(U32.and(255, U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), U32.and(255, Maybe.default(&2, U32, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body), 9n), 0))))))), U32.and(255, U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), U32.and(255, Maybe.default(&2, U32, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body), 9n), 0)))))), CP.ckp.bb2(U32.sub(256, U32.and(255, U32.sub(C.AcpiChecksum.sum(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), U32.and(255, Maybe.default(&2, U32, B.Octets.at(B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body), 9n), 0))))))) : {Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, _, o, t, orv, ci, cr}, B.Octets.drop(36n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body))}} == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
222  %TP.tb.elen(s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr, sig4, oem6, tid8, cid4) : {Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, B.Octets.drop(_, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body))}} == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
223  %Equal.sym(B.Octets, B.Octets.drop(B.Octets.len(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr})), B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)), body, BL.octets_drop_append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}), body)) : {Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, _}} == Done{H.AcpiSdt{H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, C.AcpiChecksum.byte_for(9n, B.Octets.append(H.AcpiHeader.encode(H.AcpiHeader{s, U32.from_nat(Nat.add(36n, B.Octets.len(body))), r, 0, o, t, orv, ci, cr}), body)), o, t, orv, ci, cr}, body}} : Result<&2, &2, E.AcpiError, H.AcpiSdt>}
224  {==}

Uses (41)

Used by (1)