Definition alphabet_eq_dec: forall a b:alphabet,
{a=b} + {a<>b}.
intros.
decide equality.
Qed.
(* define the left action of each letter on the set of reduced words *)
Definition letter_action (a:alphabet) (S:group_str) : group_str :=
match S with
| nil => a :: nil
| b :: S0 => (if alphabet_eq_dec a (opposite b) then S0
else a :: b :: S0)
end.

(* Specifications: *)
Lemma reduced_closed_under_letter_action:
forall (a:alphabet) (S:group_str),
reduced S -> reduced (letter_action a S).
Lemma opposites_give_inverse_actions:
forall (S:group_str) (a:alphabet), reduced S ->
letter_action (opposite a) (letter_action a S) = S.