Ltac pos_tac :=
repeat
match goal with
| |- false = _ => symmetry
| |- Pos.eqb ?X ?Y = false => rewrite Pos.eqb_neq ; intro
| H : @eq positive ?X ?Y |- _ =>  apply Zpos_eq in H
| H : context[Z.pos (Pos.succ ?X)] |- _ => rewrite (Pos2Z.inj_succ X) in H
| H : Pos.leb ?X ?Y = true |- _ => rewrite Pos.leb_le in H ;
apply (Pos2Z.pos_le_pos X Y) in H
end.

Lemma ZChecker_sound : forall w l,
ZChecker l w = true -> forall env, make_impl  (eval_nformula env)  l False.