PROOFTables.tb.mlen: def of bend-osdev-acpi@0.1.1.0 Import: import bend-osdev-acpi@0.1.1.0/PROOF_tables.bend as PROOFTables Lines 456-467 of bend-osdev-acpi@0.1.1.0/PROOF_tables.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-acpi@0.1.1.0/PROOF_tables.bend&start_line=456&end_line=467 import Base import bend-osdev-bytes@0.1.1.0/bytes.bend as B import bend-osdev-bytes@0.1.1.0/LAWS.bend as BL import bend-osdev-acpi@0.1.1.0/mcfg.bend as Mc def tb.mlen(+es: List<&2, Mc.AcpiMcfgEntry>) -> {Nat.mul(List.length(&2, Mc.AcpiMcfgEntry, es), 16n) == B.Octets.len(B.Octets.concat(Mc.mcfg.enc(es))) : Nat}: match es: case Nil{}: {==} case Con{e, t}: match e: case Mc.AcpiMcfgEntry{+b, +s, +lo, +hi}: %Equal.sym(B.Octets, B.Octets.concat(Con{B.Octets.concat([B.Octets.le64(b), B.Octets.le16(s), B.Octets.of_list([lo, hi]), B.Octets.zeros(4n)]), Mc.mcfg.enc(t)}), B.Octets.append(B.Octets.concat([B.Octets.le64(b), B.Octets.le16(s), B.Octets.of_list([lo, hi]), B.Octets.zeros(4n)]), B.Octets.concat(Mc.mcfg.enc(t))), BL.octets_concat_cons(B.Octets.concat([B.Octets.le64(b), B.Octets.le16(s), B.Octets.of_list([lo, hi]), B.Octets.zeros(4n)]), Mc.mcfg.enc(t))) : {Nat.mul(List.length(&2, Mc.AcpiMcfgEntry, Con{Mc.AcpiMcfgEntry{b, s, lo, hi}, t}), 16n) == B.Octets.len(_) : Nat} %tb.la(B.Octets.concat([B.Octets.le64(b), B.Octets.le16(s), B.Octets.of_list([lo, hi]), B.Octets.zeros(4n)]), B.Octets.concat(Mc.mcfg.enc(t))) : {Nat.mul(List.length(&2, Mc.AcpiMcfgEntry, Con{Mc.AcpiMcfgEntry{b, s, lo, hi}, t}), 16n) == _ : Nat} %tb.clen_g(b, s, lo, hi) : {Nat.mul(List.length(&2, Mc.AcpiMcfgEntry, Con{Mc.AcpiMcfgEntry{b, s, lo, hi}, t}), 16n) == Nat.add(_, B.Octets.len(B.Octets.concat(Mc.mcfg.enc(t)))) : Nat} %tb.mlen(t) : {Nat.mul(List.length(&2, Mc.AcpiMcfgEntry, Con{Mc.AcpiMcfgEntry{b, s, lo, hi}, t}), 16n) == Nat.add(16n, _) : Nat} {==} 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=List.length 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.mul https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.1.0/PROOF_tables.bend&name=tb.clen_g https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.1.0/PROOF_tables.bend&name=tb.la https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.1.0/mcfg.bend&name=AcpiMcfgEntry https://jend.leeeet.dev/definition.txt?path=bend-osdev-acpi@0.1.1.0/mcfg.bend&name=mcfg.enc https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/LAWS.bend&name=octets_concat_cons https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.append https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.concat https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.le16 https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.le64 https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.len https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.of_list https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.0/bytes.bend&name=Octets.zeros