def bits.amb_i

bend-osdev-caps@0.1.0.0 · PROOF.bend:493

import bend-osdev-caps@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-caps@0.1.0.0/caps.bend as C

493def bits.amb_i(+n: Nat, +a: Word(n), +p: Word(n), +i: Word(n)) -> {C.CapBits.subset(n, Word.and(n, Word.and(n, a, p), i), i) == True{} : Bool}:
494  match n:
495    case 0n:
496      {==}
497    case 1n+n1:
498      match a p i:
499        case WCon{True{}, +at} WCon{True{}, +pt} WCon{True{}, +it}:
500          bits.amb_i(n1, at, pt, it)
501        case WCon{True{}, +at} WCon{True{}, +pt} WCon{False{}, +it}:
502          bits.amb_i(n1, at, pt, it)
503        case WCon{True{}, +at} WCon{False{}, +pt} WCon{True{}, +it}:
504          bits.amb_i(n1, at, pt, it)
505        case WCon{True{}, +at} WCon{False{}, +pt} WCon{False{}, +it}:
506          bits.amb_i(n1, at, pt, it)
507        case WCon{False{}, +at} WCon{True{}, +pt} WCon{True{}, +it}:
508          bits.amb_i(n1, at, pt, it)
509        case WCon{False{}, +at} WCon{True{}, +pt} WCon{False{}, +it}:
510          bits.amb_i(n1, at, pt, it)
511        case WCon{False{}, +at} WCon{False{}, +pt} WCon{True{}, +it}:
512          bits.amb_i(n1, at, pt, it)
513        case WCon{False{}, +at} WCon{False{}, +pt} WCon{False{}, +it}:
514          bits.amb_i(n1, at, pt, it)

Uses (6)

Used by (1)