proposition: Lemma isometry_of_free S f : free S -> {in S &, isometry f} -> {tau : {linear 'CF(L) -> 'CF(G)} | {in S, tau =1 f} & {in <<S>>%VS &, isometry tau}}.
proof: Proof. move=> freeS If; have defS := free_span freeS. have [tau /(_ freeS (size_map f S))Dtau] := linear_of_free S (map f S). have{} Dtau: {in S, tau =1 f}. by move=> _ /(nthP 0)[i ltiS <-]; rewrite -!(nth_map 0 0) ?Dtau. exists tau => // _ _ /defS[a -> _] /defS[b -> _]. rewrite !{1}linear_sum !{1}cfdot_suml; apply/eq_big_seq=> xi1 Sxi1. rewrite !{1}cfdot_sumr; apply/eq_big_seq=> xi2 Sxi2. by rewrite !linearZ /= !Dtau // !cfdotZl !cfdotZr If. Qed.
imports: HB(structures) mathcomp(ssreflect ssrbool ssrfun eqtype ssrnat seq path) mathcomp(div choice fintype tuple finfun bigop prime order) mathcomp(ssralg poly finset fingroup morphism perm) mathcomp(automorphism quotient finalg action gproduct) mathcomp(zmodp commutator cyclic center pgroup sylow) mathcomp(matrix vector falgebra ssrnum algC algnum) mathcomp(archimedean)