Example #1
0
def reach_state_from_pred(state,clauses=None):
    """ If state is reachable from its predecessor's
    underapproximation, update its underapproximation with some
    reachable set of states. If not reachable, throw
    UnsatCoreWithInterpolant. In this case, the interpolant is implied
    by the predecessor's underapproximation but cannot reach the
    current state, hence it is a reasonable abductive inference.
    """
    post = reach_state(state,clauses)
    if post != None:
        return post
    ri = reverse_interpolant_case(clauses,state.update,pre,state.domain.functions)
    if ri:
        raise UnsatCoreWithInterpolant(*ri)
    return None
Example #2
0
def reach_state_from_pred(state,clauses=None):
    """ If state is reachable from its predecessor's
    underapproximation, update its underapproximation with some
    reachable set of states. If not reachable, throw
    UnsatCoreWithInterpolant. In this case, the interpolant is implied
    by the predecessor's underapproximation but cannot reach the
    current state, hence it is a reasonable abductive inference.
    """
    post = reach_state(state,clauses)
    if post != None:
        return post
    ri = reverse_interpolant_case(clauses,state.update,pre,axioms,state.domain.functions)
    if ri:
        raise UnsatCoreWithInterpolant(*ri)
    return None