(* *)
(**************************************************************************)
-set "baseuri" "cic:/matita/divisible_group/".
+
include "nat/orders.ma".
include "group.ma".
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 apmul_ap: ∀G:dgroup.∀x,y:G.∀n.S n * x # S n * y → x # y.
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.