- letin H' ≝ (p2bT ? ? (negbP ?) H); clearbody H'; clear H;
- letin H'' ≝ (b2pT ? ? (andbPF ? ?) H'); clearbody H''; clear H';
- cases H''; clear H'';
- [ intros;
- letin H' ≝ (b2pF ? ? (eqP d ? ?) H); clearbody H'; clear H;
- (* XXX destruct H1; *)
- change in H' with (Not ((match (x1::tl1) with [nil⇒x1|(cons x1 _) ⇒ x1]) = s));
- rewrite > H1 in H'; simplify in H'; apply H'; reflexivity;
- | intros;
- letin H' ≝ (IH ? H); clearbody H';
- (* XXX destruct H1 *)
- change in H' with (Not ((match (x1::tl1) with [nil⇒tl1|(cons _ l) ⇒ l]) = l));
- rewrite > H1 in H'; simplify in H'; apply H'; reflexivity;
- ]]]]
+ cases (b2pT ? ? (andbPF ? ?) (p2bT ? ? (negbP ?) H)); clear H;
+ [ intros; lapply (b2pF ? ? (eqP d ? ?) H1) as H'; clear H1;
+ destruct H; rewrite > Hcut in H'; apply H'; reflexivity;
+ | intros; lapply (IH ? H1) as H'; destruct H;
+ rewrite > Hcut1 in H'; apply H'; reflexivity;]]]]