def whatsnew(instance,pred):
    '''
    [whatsnew(instance,pred)] is a TermSet equal to [pred] where all predicates
    vlabel and elabel which have a corresponding obs_vlabel and obs_elabel in
    [instance] have been deleted. This function is meant to see which of the invariants
    are not a direct consequence of the observations.
    '''
    accu = TermSet(pred)
    for t in instance:

        if t.pred() == 'obs_vlabel':
            [_,e,v,s] = t.explode()
            accu.discard(Term('vlabel',[e,v,s]))
        elif t.p('obs_elabel'):
            [_,j,i,s] = t.explode()
            accu.discard(Term('elabel',[j,i,s]))
    return accu