예제 #1
0
 def f(index, key):
     return PO.CPOStackAddressEscape(self, index, p.tags, args)
예제 #2
0
    'lb': lambda x: PO.CPOLowerBound(*x),
    "nm": lambda x: PO.CPONewMemory(*x),
    'nn': lambda x: PO.CPONotNull(*x),
    'nneg': lambda x: PO.CPONonNegative(*x),
    'no': lambda x: PO.CPONoOverlap(*x),
    'nt': lambda x: PO.CPONullTerminated(*x),
    'null': lambda x: PO.CPONull(*x),
    'pc': lambda x: PO.CPOPointerCast(*x),
    'plb': lambda x: PO.CPOPtrLowerBound(*x),
    'pre': lambda x: PO.CPOPredicate(*x),
    'prm': lambda x: PO.CPOPreservedAllMemory(*x),
    'pub': lambda x: PO.CPOPtrUpperBound(*x),
    'pubd': lambda x: PO.CPOPtrUpperBoundDeref(*x),
    'pv': lambda x: PO.CPOPreservedValue(*x),
    'rb': lambda x: PO.CPORevBuffer(*x),
    'sae': lambda x: PO.CPOStackAddressEscape(*x),
    'tao': lambda x: PO.CPOTypeAtOffset(*x),
    'ub': lambda x: PO.CPOUpperBound(*x),
    'uio': lambda x: PO.CPOUIntOverflow(*x),
    'uiu': lambda x: PO.CPOUIntUnderflow(*x),
    'va': lambda x: PO.CPOVarArgs(*x),
    'vc': lambda x: PO.CPOValueConstraint(*x),
    'vm': lambda x: PO.CPOValidMem(*x),
    'w': lambda x: PO.CPOWidthOverflow(*x),
    'z': lambda x: PO.CPONotZero(*x)
}


class CFilePredicateDictionary(object):
    """Dictionary that encodes proof obligation predicates."""
    def __init__(self, cfile):