Theory Action
section "Right group actions"
theory Action
  imports "HOL-Algebra.Group"
begin
locale action = group +
  fixes act :: "'b ⇒ 'a ⇒ 'b" (infixl ‹<o› 69)
  assumes id_act [simp]: "b <o 𝟭 = b"
  and act_act':
  "g ∈ carrier G ∧ h ∈ carrier G ⟶ (b <o g) <o h = b <o (g ⊗ h)"
begin
lemma act_act:
  assumes "g ∈ carrier G" and "h ∈ carrier G"
  shows "(b <o g) <o h = b <o (g ⊗ h)"
proof -
  from ‹g ∈ carrier G› and ‹h ∈ carrier G› and act_act'
  show "(b <o g) <o h = b <o (g ⊗ h)" by simp
qed
lemma act_act_inv [simp]:
  assumes "g ∈ carrier G"
  shows "b <o g <o inv g = b"
proof -
  from ‹g ∈ carrier G› have "inv g ∈ carrier G" by (rule inv_closed)
  with ‹g ∈ carrier G› have "b <o g <o inv g = b <o g ⊗ inv g" by (rule act_act)
  with ‹g ∈ carrier G› show "b <o g <o inv g = b" by simp
qed
lemma act_inv_act [simp]:
  assumes "g ∈ carrier G"
  shows "b <o inv g <o g = b"
  using ‹g ∈ carrier G› and act_act_inv [of "inv g"]
  by simp
lemma act_inv_iff:
  assumes "g ∈ carrier G"
  shows "b <o inv g = c ⟷ b = c <o g"
proof
  assume "b <o inv g = c"
  hence "b <o inv g <o g = c <o g" by simp
  with ‹g ∈ carrier G› show "b = c <o g" by simp
next
  assume "b = c <o g"
  hence "b <o inv g = c <o g <o inv g" by simp
  with ‹g ∈ carrier G› show "b <o inv g = c" by simp
qed
end
end