assumption
]
|elim (divides_b_true_to_divides ? ? H4).
- apply (witness ? ? n2).
+ apply (witness ? ? n1).
rewrite > assoc_times.
rewrite < H5.
rewrite < sym_times.
[unfold bc.rewrite > H3.
rewrite > sym_times.
rewrite > lt_O_to_div_times
- [elim (divides_times_to_divides p (m!*(S (2*m)-m)!) n2)
+ [elim (divides_times_to_divides p (m!*(S (2*m)-m)!) n1)
[apply False_ind.
elim (divides_times_to_divides p (m!) (S (2*m)-m)!)
[apply (lt_to_not_le ? ? (lt_to_le ? ? H1)).
theorem divides_to_congruent: \forall n,m,p:nat. O < p \to m \le n \to
divides p (n - m) \to congruent n m p.
intros.elim H2.
-apply (eq_times_plus_to_congruent n m p n2).
+apply (eq_times_plus_to_congruent n m p n1).
assumption.
rewrite < sym_plus.
apply minus_to_plus.assumption.
intros.
elim (H2 ((gcd a b)))
[ apply (antisymmetric_divides (gcd a b) c)
- [ apply (witness (gcd a b) c n2).
+ [ apply (witness (gcd a b) c n1).
assumption
| apply divides_d_gcd;
assumption
]
| assumption
]
- | apply (witness ? ? n2).
+ | apply (witness ? ? n1).
apply (inj_times_r1 (gcd a b) Hcut1).
rewrite < assoc_times.
rewrite < sym_times in \vdash (? ? (? % ?) ?).
| intros.
elim H1.
elim H2.
- cut(b = (d*n2) + a)
- [ cut (b - (d*n2) = a)
+ cut(b = (d*n1) + a)
+ [ cut (b - (d*n1) = a)
[ rewrite > H4 in Hcut1.
- rewrite < (distr_times_minus d n n2) in Hcut1.
+ rewrite < (distr_times_minus d n n1) in Hcut1.
apply divides_d_gcd
[ assumption
- | apply (witness d a (n - n2)).
+ | apply (witness d a (n - n1)).
apply sym_eq.
assumption
]
assumption
|apply lt_exp_Sn_n_SSSO
]
- |apply (O_lt_times_to_O_lt ? n2).
+ |apply (O_lt_times_to_O_lt ? n1).
rewrite < H2.
assumption
]