consider H being ManySortedFunction of F2(),F3() such that
A3: H is_homomorphism F2(),F3() and
A4: F5() = H ** F4() by A1, A2;
take H ; :: thesis: ( H is_homomorphism F2(),F3() & F5() -hash = H ** (F4() -hash) )
thus H is_homomorphism F2(),F3() by A3; :: thesis: F5() -hash = H ** (F4() -hash)
F4() -hash is_homomorphism FreeMSA ( the carrier of F1() --> NAT),F2() by Def1;
then A5: H ** (F4() -hash) is_homomorphism FreeMSA ( the carrier of F1() --> NAT),F3() by A3, MSUALG_3:10;
reconsider SN = the carrier of F1() --> NAT as non-empty ManySortedSet of the carrier of F1() ;
reconsider h1 = F5() as ManySortedFunction of SN, the Sorts of F3() ;
A6: h1 -hash is_homomorphism FreeMSA SN,F3() by Def1;
(h1 -hash) || (FreeGen SN) = F5() ** (Reverse SN) by Def1
.= H ** (F4() ** (Reverse SN)) by A4, PBOOLE:140
.= H ** ((F4() -hash) || (FreeGen ( the carrier of F1() --> NAT))) by Def1
.= (H ** (F4() -hash)) || (FreeGen ( the carrier of F1() --> NAT)) by EXTENS_1:4 ;
hence F5() -hash = H ** (F4() -hash) by A6, A5, EXTENS_1:14; :: thesis: verum