]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/dama/divisible_group.ma
Bertrand's conjecture (weak), some work in progress
[helm.git] / helm / software / matita / dama / divisible_group.ma
index 7d2eeed454871b3b273036d137561e511b216544..3a79b11bbd969a884307f4a6a86d08e63cbcfff8 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-set "baseuri" "cic:/matita/divisible_group/".
+
 
 include "nat/orders.ma".
 include "group.ma".
@@ -41,7 +41,7 @@ intro G; cases G; unfold divide; intros (x n); simplify;
 cases (f x n); simplify; exact H;
 qed.  
   
-lemma feq_pow: ∀G:dgroup.∀x,y:G.∀n.x≈y → n * x ≈ n * y.
+lemma feq_mul: ∀G:dgroup.∀x,y:G.∀n.x≈y → n * x ≈ n * y.
 intros (G x y n H); elim n; [apply eq_reflexive]
 simplify; apply (Eq≈ (x + (n1 * y)) H1);
 apply (Eq≈ (y+n1*y) H (eq_reflexive ??));
@@ -50,11 +50,11 @@ qed.
 lemma div1: ∀G:dgroup.∀x:G.x/O ≈ x.
 intro G; cases G; unfold divide; intros; simplify;
 cases (f x O); simplify; simplify in H; intro; apply H;
-apply (ap_rewl ???? (plus_comm ???));
-apply (ap_rewl ???w (zero_neutral ??)); assumption;
+apply (Ap≪ ? (plus_comm ???));
+apply (Ap≪ w (zero_neutral ??)); assumption;
 qed.
 
-lemma appow_ap: ∀G:dgroup.∀x,y:G.∀n.S n * x # S n * y → x # y.
+lemma apmul_ap: ∀G:dgroup.∀x,y:G.∀n.S n * x # S n * y → x # y.
 intros 4 (G x y n); elim n; [2:
   simplify in a;
   cases (applus ????? a); [assumption]
@@ -62,7 +62,7 @@ intros 4 (G x y n); elim n; [2:
 apply (plus_cancr_ap ??? 0); assumption;
 qed.
 
-lemma pluspow: ∀G:dgroup.∀x,y:G.∀n.n * (x+y) ≈ n * x + n * y.
+lemma plusmul: ∀G:dgroup.∀x,y:G.∀n.n * (x+y) ≈ n * x + n * y.
 intros (G x y n); elim n; [
   simplify; apply (Eq≈ 0 ? (zero_neutral ? 0)); apply eq_reflexive]
 simplify; apply eq_sym; apply (Eq≈ (x+y+(n1*x+n1*y))); [
@@ -78,8 +78,22 @@ simplify; apply eq_sym; apply (Eq≈ (x+y+(n1*x+n1*y))); [
 apply feq_plusl; apply eq_sym; assumption;
 qed. 
 
-lemma powzero: ∀G:dgroup.∀n.n*0 ≈ 0. [2: apply dg_carr; apply G]
+lemma mulzero: ∀G:dgroup.∀n.n*0 ≈ 0. [2: apply dg_carr; apply G]
 intros; elim n; [simplify; apply eq_reflexive]
 simplify; apply (Eq≈ ? (zero_neutral ??)); assumption; 
 qed.
 
+let rec gpowS (G : abelian_group) (x : G) (n : nat) on n : G ≝
+  match n with [ O ⇒ x | S m ⇒ gpowS ? x m + x].
+  
+lemma gpowS_gpow: ∀G:dgroup.∀e:G.∀n. S n * e ≈ gpowS ? e n.
+intros (G e n); elim n; simplify; [
+  apply (Eq≈ ? (plus_comm ???));apply zero_neutral]
+apply (Eq≈ ?? (plus_comm ???));  
+apply (Eq≈ (e+S n1*e) ? H); clear H; simplify; apply eq_reflexive;
+qed.
+
+lemma divpow: ∀G:dgroup.∀e:G.∀n. e ≈ gpowS ? (e/n) n.
+intros (G e n); apply (Eq≈ ?? (gpowS_gpow ?(e/n) n));
+apply eq_sym; apply divide_divides;
+qed.