J'aurais du mieux commenter, les paris représentent les valeurs assignées (que ce soit un pari ou une propagation) donc paris n'est modifié que dans set_val et reset_val.
Il risqué de regarder dans occurences_pos et neg sans vérifier les paris mais clauses ne contient pas les clauses éliminées par des affectations.
Du coup tes implémentations de find_singleton et single polarite doivent pouvoir être simplifiées.