def tb.xlen
bend-osdev-acpi@0.1.1.0 · PROOF_tables.bend:297
import bend-osdev-acpi@0.1.1.0/PROOF_tables.bend as PROOFTables
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
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/rsdt.bend as R
297def tb.xlen(+xs: List<&2, W.W64>) -> {Nat.mul(List.length(&2, W.W64, xs), 8n) == B.Octets.len(B.Octets.concat(R.sl.enc(xs, True{}))) : Nat}:
298 match xs:
299 case Nil{}:
300 {==}
301 case Con{x, t}:
302 %Equal.sym(B.Octets, B.Octets.concat(Con{B.Octets.le64(x), R.sl.enc(t, True{})}), B.Octets.append(B.Octets.le64(x), B.Octets.concat(R.sl.enc(t, True{}))), BL.octets_concat_cons(B.Octets.le64(x), R.sl.enc(t, True{}))) : {Nat.mul(List.length(&2, W.W64, Con{x, t}), 8n) == B.Octets.len(_) : Nat}
303 %tb.la(B.Octets.le64(x), B.Octets.concat(R.sl.enc(t, True{}))) : {Nat.mul(List.length(&2, W.W64, Con{x, t}), 8n) == _ : Nat}
304 %Equal.sym(Nat, B.Octets.len(B.Octets.le64(x)), 8n, BL.octets_len_le64(x)) : {Nat.mul(List.length(&2, W.W64, Con{x, t}), 8n) == Nat.add(_, B.Octets.len(B.Octets.concat(R.sl.enc(t, True{})))) : Nat}
305 %tb.xlen(t) : {Nat.mul(List.length(&2, W.W64, Con{x, t}), 8n) == Nat.add(8n, _) : Nat}
306 {==}