Skip to content

Syntactic+semantic subsumption check #72

Open
@rajdeep87

Description

@rajdeep87

Current subsumption check using SAT call solver << and_exprt(conjunction(value), not_exprt(m)) may subsume valid meet irreducibles in presence of octagonal constraints, which may further block the propagation phase from deducing closed abstract value.
We change the subsumption check to the following. Assume the function is_subsumption(A,m) where we want to determine if m is subsumed by abstract value A.
Step 1: Normalize all expressions in A as well as m (that is, !(x<=10) to (x>10))
Step 2: Collect all lhs templates of the meet irreducibles in A that matches with lhs of m in a vector value.
Step 3: Check using solver whether and_exprt(conjunction(value), not_exprt(m)) is SAT or UNSAT. If SAT, then m is not subsumed by A, else m is subsumed by A.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions