let fresh_diseq p = let d = Fact.Diseq.Set.choose p.diseq in p.diseq <- Fact.Diseq.Set.remove d p.diseq; d