notation < "\ldots\rect\square\EmptySmallSquare\ldots" with precedence 90 for @{'lq2}.
interpretation "lq2" 'lq2 = (list bar).
-let rec sum_bases (l:list bar) (i:nat)on i ≝
+let rec sum_bases (l:list bar) (i:nat) on i ≝
match i with
[ O ⇒ OQ
| S m ⇒
apply (sum_bases_ge_OQ l1);
qed.
+lemma sum_bases_increasing:
+ ∀l,x.sum_bases l x < sum_bases l (S x).
+intro; elim l;
+[1: elim x;
+ [1: simplify; rewrite > q_plus_sym; rewrite > q_plus_OQ;
+ apply q_pos_lt_OQ;
+ |2: simplify in H ⊢ %;
+ apply q_lt_plus; rewrite > q_elim_minus;
+ rewrite < q_plus_assoc; rewrite < q_elim_minus;
+ rewrite > q_plus_minus; rewrite > q_plus_OQ;
+ assumption;]
+|2: elim x;
+ [1: simplify; rewrite > q_plus_sym; rewrite > q_plus_OQ;
+ apply q_pos_lt_OQ;
+ |2: simplify; change in ⊢ (? ? (? % ?)) with (sum_bases l1 (S n)) ;
+ apply q_lt_plus; rewrite > q_elim_minus;
+ rewrite < q_plus_assoc; rewrite < q_elim_minus;
+ rewrite > q_plus_minus; rewrite > q_plus_OQ; apply H]]
+qed.
+
+lemma sum_bases_lt_canc:
+ ∀l,x,y.sum_bases l (S x) < sum_bases l (S y) → sum_bases l x < sum_bases l y.
+intro; elim l; [apply (q_lt_canc_plus_r ?? (Qpos one));apply H]
+generalize in match H1;apply (nat_elim2 (?:? → ? → CProp) ??? x y);
+intros 2;
+[3: intros 2; simplify; apply q_lt_inj_plus_r; apply H;
+ apply (q_lt_canc_plus_r ?? (Qpos (\fst a))); apply H3;
+|2: cases (?:False); simplify in H2;
+ apply (q_lt_le_incompat (sum_bases l1 (S n)) OQ);[2: apply sum_bases_ge_OQ;]
+ apply (q_lt_canc_plus_r ?? (Qpos (\fst a))); apply H2;
+|1: cases n in H2; intro;
+ [1: cases (?:False); apply (q_lt_corefl ? H2);
+ |2: simplify; apply q_lt_plus_trans; [apply sum_bases_ge_OQ]
+ apply q_pos_lt_OQ;]]
+qed.
+