Exemple #1
0
def offer_predicate(viper_ast: ViperAST,
                    from_resource,
                    to_resource,
                    from_val,
                    to_val,
                    from_addr,
                    to_addr,
                    pos=None):
    return viper_ast.PredicateAccess(
        [from_resource, to_resource, from_val, to_val, from_addr, to_addr],
        mangled.OFFER, pos)
Exemple #2
0
def check_call_failed(viper_ast: ViperAST, address, pos=None, info=None):
    none = viper_ast.NoPerm(pos)
    predicate = viper_ast.PredicateAccess([address], mangled.FAILED, pos)
    return viper_ast.GtCmp(viper_ast.CurrentPerm(predicate, pos), none, pos,
                           info)
Exemple #3
0
def call_failed(viper_ast: ViperAST, address, pos=None, info=None):
    write = viper_ast.FullPerm(pos)
    predicate = viper_ast.PredicateAccess([address], mangled.FAILED, pos)
    predicate_acc = viper_ast.PredicateAccessPredicate(predicate, write, pos)
    return viper_ast.Inhale(predicate_acc, pos, info)
Exemple #4
0
def performs_predicate(viper_ast: ViperAST, function: str, args, pos=None):
    name = mangled.performs_predicate_name(function)
    return viper_ast.PredicateAccess(args, name, pos)
Exemple #5
0
def trust_predicate(viper_ast: ViperAST, where, address, by_address, pos=None):
    return viper_ast.PredicateAccess([where, address, by_address],
                                     mangled.TRUST, pos)
Exemple #6
0
def allocation_predicate(viper_ast: ViperAST, resource, address, pos=None):
    return viper_ast.PredicateAccess([resource, address], mangled.ALLOCATION,
                                     pos)