Fixpoint inverse_str (S:group_str) : group_str :=
  match S with
  | nil => nil
  | a :: S0 => (inverse_str S0) ++ (opposite a) :: nil
  end.

Lemma inverse_str_reverses_concat: forall (S T:group_str), inverse_str (S ++ T) = (inverse_str T) ++ (inverse_str S).