X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2Fnat%2Fgcd_properties1.ma;h=94aa67670aa07ac780712a2d3983097ed00d8f4b;hb=32d8d8d419e0b910435da275361bb55d49bc43a9;hp=aa9783a9638067f41a2b800a039b4730696ae2ee;hpb=a9f72dea3b74e3c0c33daf5be8f4d5d75611492c;p=helm.git diff --git a/helm/software/matita/library/nat/gcd_properties1.ma b/helm/software/matita/library/nat/gcd_properties1.ma index aa9783a96..94aa67670 100644 --- a/helm/software/matita/library/nat/gcd_properties1.ma +++ b/helm/software/matita/library/nat/gcd_properties1.ma @@ -157,20 +157,12 @@ apply (leb_elim n m) ] qed. -(* 2 basic properties of divides predicate *) -theorem aDIVb_to_bDIVa_to_aEQb: -\forall a,b:nat. -a \divides b \to b \divides a \to a = b. -intros. -apply antisymmetric_divides; - assumption. -qed. - +(* a basic property of divides predicate *) theorem O_div_c_to_c_eq_O: \forall c:nat. O \divides c \to c = O. intros. -apply aDIVb_to_bDIVa_to_aEQb +apply antisymmetric_divides [ apply divides_n_O | assumption ] @@ -182,7 +174,7 @@ c \divides a \to c \divides b \to (\forall d:nat. d \divides a \to d \divides b \to d \divides c) \to (gcd a b) = c. intros. elim (H2 ((gcd a b))) -[ apply (aDIVb_to_bDIVa_to_aEQb (gcd a b) c) +[ apply (antisymmetric_divides (gcd a b) c) [ apply (witness (gcd a b) c n2). assumption | apply divides_d_gcd; @@ -203,47 +195,28 @@ apply (nat_case1 c) simplify. reflexivity | intros. - rewrite < H. - apply (nat_case1 a) - [ intros. - rewrite > (sym_times c O). - simplify. - reflexivity + rewrite < H. + apply gcd1 + [ apply divides_times + [ apply divides_n_n + | apply divides_gcd_n. + ] + | apply divides_times + [ apply divides_n_n + | rewrite > sym_gcd. + apply divides_gcd_n + ] | intros. - rewrite < H1. - apply (nat_case1 b) - [ intros. - rewrite > (sym_times ? O). - rewrite > (sym_gcd a O). - rewrite > sym_gcd. - simplify. - reflexivity - | intros. - rewrite < H2. - apply gcd1 - [ apply divides_times - [ apply divides_n_n - | apply divides_gcd_n. - ] - | apply divides_times - [ apply divides_n_n - | rewrite > sym_gcd. - apply divides_gcd_n - ] - | intros. - apply (divides_d_times_gcd) - [ rewrite > H. - apply lt_O_S - | assumption - | assumption - ] - ] + apply (divides_d_times_gcd) + [ rewrite > H. + apply lt_O_S + | assumption + | assumption ] ] ] qed. - theorem associative_nat_gcd: associative nat gcd. change with (\forall a,b,c:nat. (gcd (gcd a b) c) = (gcd a (gcd b c))). intros. @@ -283,7 +256,7 @@ apply (nat_case1 a) [ intros. apply (nat_case1 b) [ intros. - cut (d = O) + cut (d = O) (*this is an impossible case*) [ rewrite > Hcut. simplify. apply divides_SO_n