def pth_dec
bend-osdev-acpi@0.1.1.0 · PROOF.bend:2203
import bend-osdev-acpi@0.1.1.0/PROOF.bend as PROOF
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_name.bend as N
2203def pth_dec(+ss: List<&2, B.Octets>, +R: List<&2, U32>, +oks: {N.AmlName.segs_ok(ss) == True{} : Bool}, +lt: {Nat.is_lt(N.nm.len(ss), 256n) == True{} : Bool}) -> {Done{N.AmlNameL{N.AmlName{False{}, 0n, ss}, R}} == N.nm.dec(B.append(B.mask(N.nm.path(ss)), R)) : Result<&2, &2, E.AcpiError, N.AmlNameL>}:
2204 match ss:
2205 case Nil{}:
2206 {==}
2207 case Con{s, t}:
2208 match t:
2209 case Nil{}:
2210 %mask_segs(Con{s, Nil{}}) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Nil{}}}, R}} == N.nm.dec(B.append(_, R)) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2211 pth1_dec(s, B.Octets.to_list(s), R, {==}, and_l(N.AmlName.seg_ok(s), True{}, oks))
2212 case Con{s2, t2}:
2213 match t2:
2214 case Nil{}:
2215 %mask_segs(Con{s, Con{s2, Nil{}}}) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Con{s2, Nil{}}}}, R}} == N.nm.dec(B.append(Con{46, _}, R)) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2216 %segs_rt(Con{s, Con{s2, Nil{}}}, R, oks) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Con{s2, Nil{}}}}, R}} == N.nm.named(False{}, 0n, _) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2217 {==}
2218 case Con{s3, t3}:
2219 %mask_segs(Con{s, Con{s2, Con{s3, t3}}}) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Con{s2, Con{s3, t3}}}}, R}} == N.nm.dec(B.append(Con{47, Con{B.byte(U32.from_nat(Nat.add(3n, N.nm.len(t3)))), _}}, R)) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2220 %Equal.sym(Nat, U32.to_nat(B.byte(U32.from_nat(Nat.add(3n, N.nm.len(t3))))), Nat.add(3n, N.nm.len(t3)), cnt_rt(Nat.add(3n, N.nm.len(t3)), lt)) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Con{s2, Con{s3, t3}}}}, R}} == N.nm.named(False{}, 0n, N.nm.multi.k(Nat.is_eq(_, 0n), _, B.append(N.nm.segs.list(Con{s, Con{s2, Con{s3, t3}}}), R))) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2221 %segs_rt(Con{s, Con{s2, Con{s3, t3}}}, R, oks) : {Done{N.AmlNameL{N.AmlName{False{}, 0n, Con{s, Con{s2, Con{s3, t3}}}}, R}} == N.nm.named(False{}, 0n, _) : Result<&2, &2, E.AcpiError, N.AmlNameL>}
2222 {==}