Computes the set of signs on edges/vertices that can be cautiously
    derived from [instance], minus those that are a direct consequence
    of obs_[ev]label predicates

def get_predictions_under_consistency(instance):
    '''
    Computes the set of signs on edges/vertices that can be cautiously
    derived from [instance], minus those that are a direct consequence
    of obs_[ev]label predicates
    '''
    inst   = instance.to_file()
    prg    = [ prediction_prg, inst, exclude_sol([]) ]
    solver = GringoClasp(clasp_options='--project --enum-mode cautious')
    models = solver.run(prg, collapseTerms=True, collapseAtoms=False)
    os.unlink(inst)
    os.unlink(prg[2])
    return whatsnew(instance,models[0])