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).