def bits.amb_p

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

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

470def bits.amb_p(+n: Nat, +a: Word(n), +p: Word(n), +i: Word(n)) -> {C.CapBits.subset(n, Word.and(n, Word.and(n, a, p), i), p) == True{} : Bool}:
471  match n:
472    case 0n:
473      {==}
474    case 1n+n1:
475      match a p i:
476        case WCon{True{}, +at} WCon{True{}, +pt} WCon{True{}, +it}:
477          bits.amb_p(n1, at, pt, it)
478        case WCon{True{}, +at} WCon{True{}, +pt} WCon{False{}, +it}:
479          bits.amb_p(n1, at, pt, it)
480        case WCon{True{}, +at} WCon{False{}, +pt} WCon{True{}, +it}:
481          bits.amb_p(n1, at, pt, it)
482        case WCon{True{}, +at} WCon{False{}, +pt} WCon{False{}, +it}:
483          bits.amb_p(n1, at, pt, it)
484        case WCon{False{}, +at} WCon{True{}, +pt} WCon{True{}, +it}:
485          bits.amb_p(n1, at, pt, it)
486        case WCon{False{}, +at} WCon{True{}, +pt} WCon{False{}, +it}:
487          bits.amb_p(n1, at, pt, it)
488        case WCon{False{}, +at} WCon{False{}, +pt} WCon{True{}, +it}:
489          bits.amb_p(n1, at, pt, it)
490        case WCon{False{}, +at} WCon{False{}, +pt} WCon{False{}, +it}:
491          bits.amb_p(n1, at, pt, it)

Uses (6)

Used by (1)