equal
deleted
inserted
replaced
469 lemma (in group) int_pow_mult: |
469 lemma (in group) int_pow_mult: |
470 assumes "x \<in> carrier G" shows "x [^] (i + j::int) = x [^] i \<otimes> x [^] j" |
470 assumes "x \<in> carrier G" shows "x [^] (i + j::int) = x [^] i \<otimes> x [^] j" |
471 proof - |
471 proof - |
472 have [simp]: "-i - j = -j - i" by simp |
472 have [simp]: "-i - j = -j - i" by simp |
473 show ?thesis |
473 show ?thesis |
474 by (auto simp add: assms int_pow_def2 inv_solve_left inv_solve_right nat_add_distrib [symmetric] nat_pow_mult ) |
474 by (auto simp: assms int_pow_def2 inv_solve_left inv_solve_right nat_add_distrib [symmetric] nat_pow_mult) |
475 qed |
475 qed |
476 |
476 |
477 lemma (in group) int_pow_inv: |
477 lemma (in group) int_pow_inv: |
478 "x \<in> carrier G \<Longrightarrow> (inv x) [^] (i :: int) = inv (x [^] i)" |
478 "x \<in> carrier G \<Longrightarrow> (inv x) [^] (i :: int) = inv (x [^] i)" |
479 by (simp add: nat_pow_inv int_pow_def2) |
479 by (metis int_pow_def2 nat_pow_inv) |
480 |
480 |
481 lemma (in group) int_pow_pow: |
481 lemma (in group) int_pow_pow: |
482 assumes "x \<in> carrier G" |
482 assumes "x \<in> carrier G" |
483 shows "(x [^] (n :: int)) [^] (m :: int) = x [^] (n * m :: int)" |
483 shows "(x [^] (n :: int)) [^] (m :: int) = x [^] (n * m :: int)" |
484 proof (cases) |
484 proof (cases) |
870 using assms unfolding hom_def by (auto simp add: Pi_iff) |
870 using assms unfolding hom_def by (auto simp add: Pi_iff) |
871 |
871 |
872 lemma (in group) hom_compose: |
872 lemma (in group) hom_compose: |
873 "[|h \<in> hom G H; i \<in> hom H I|] ==> compose (carrier G) i h \<in> hom G I" |
873 "[|h \<in> hom G H; i \<in> hom H I|] ==> compose (carrier G) i h \<in> hom G I" |
874 by (fastforce simp add: hom_def compose_def) |
874 by (fastforce simp add: hom_def compose_def) |
|
875 |
|
876 lemma (in group) restrict_hom_iff [simp]: |
|
877 "(\<lambda>x. if x \<in> carrier G then f x else g x) \<in> hom G H \<longleftrightarrow> f \<in> hom G H" |
|
878 by (simp add: hom_def Pi_iff) |
875 |
879 |
876 definition iso :: "_ => _ => ('a => 'b) set" |
880 definition iso :: "_ => _ => ('a => 'b) set" |
877 where "iso G H = {h. h \<in> hom G H \<and> bij_betw h (carrier G) (carrier H)}" |
881 where "iso G H = {h. h \<in> hom G H \<and> bij_betw h (carrier G) (carrier H)}" |
878 |
882 |
879 definition is_iso :: "_ \<Rightarrow> _ \<Rightarrow> bool" (infixr "\<cong>" 60) |
883 definition is_iso :: "_ \<Rightarrow> _ \<Rightarrow> bool" (infixr "\<cong>" 60) |
1580 using l_cancel_one by fastforce |
1584 using l_cancel_one by fastforce |
1581 |
1585 |
1582 lemma (in group) r_cancel_one' [simp]: "x \<in> carrier G \<Longrightarrow> a \<in> carrier G \<Longrightarrow> x = a \<otimes> x \<longleftrightarrow> a = one G" |
1586 lemma (in group) r_cancel_one' [simp]: "x \<in> carrier G \<Longrightarrow> a \<in> carrier G \<Longrightarrow> x = a \<otimes> x \<longleftrightarrow> a = one G" |
1583 using r_cancel_one by fastforce |
1587 using r_cancel_one by fastforce |
1584 |
1588 |
|
1589 declare pow_nat [simp] (*causes looping if added above, especially with int_pow_def2*) |
|
1590 |
1585 end |
1591 end |