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_minimal_repair(instance, repair_options, optimum):
    '''
    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()
    repops  = repair_options.to_file()
    prg     = [ inst, repops, prediction_core_prg, repair_cardinality_prg ]
    options = '--project --enum-mode cautious --opt-mode=optN --opt-bound='+str(optimum)
    solver  = GringoClasp(clasp_options=options)
    models  = solver.run(prg, collapseTerms=True, collapseAtoms=False)
    os.unlink(inst)
    os.unlink(repops)
    return whatsnew(instance,models[0])