+ [ apply le_O_n; | assumption]]
+|3: unfold match_domain; cases (cases_find bar (match_pred i) f ▭); [
+ cases i1 in H; intros; simplify; [assumption]
+ apply lt_S_to_lt; assumption;]
+ rewrite > H; cases (\len f) in len_bases_gt_O_f; intros; [cases (not_le_Sn_O ? H3)]
+ simplify; apply le_n;
+|4: intros; unfold match_domain in H; cases (cases_find bar (match_pred i) f ▭) in H; simplify; intros;
+ [1: lapply (H3 n); [2: cases i1 in H4; intros [assumption] apply le_S; assumption;]
+ unfold match_pred in Hletin; cases (q_cmp (Qpos i) (\fst (\nth f ▭ n))) in Hletin;
+ simplify; intros; [destruct H6] assumption;
+ |2: destruct H; cases f in len_bases_gt_O_f H2 H3; clear H1; simplify; intros;
+ [cases (not_le_Sn_O ? H)] lapply (H1 n); [2: apply le_S; assumption]
+ unfold match_pred in Hletin; cases (q_cmp (Qpos i) (\fst (\nth (b::l) ▭ n))) in Hletin;
+ simplify; intros; [destruct H4] assumption;]]