<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_equiv_transformations(self, transformation_sets, film_vectors, substrate_vectors):
 """ Applies the transformation_sets to the film and substrate vectors to generate super-lattices and checks if they matches. Returns all matching vectors sets. Args: transformation_sets(array):
 an array of transformation sets: each transformation set is an array with the (i,j) indicating the area multipes of the film and subtrate it corresponds to, an array with all possible transformations for the film area multiple i and another array for the substrate area multiple j. film_vectors(array):
 film vectors to generate super lattices substrate_vectors(array):
 substrate vectors to generate super lattices """


        for (film_transformations, substrate_transformations) in \
                transformation_sets:
            # Apply transformations and reduce using Zur reduce methodology
            films = [reduce_vectors(*np.dot(f, film_vectors)) for f in film_transformations]

            substrates = [reduce_vectors(*np.dot(s, substrate_vectors)) for s in substrate_transformations]

            # Check if equivelant super lattices
            for f, s in product(films, substrates):
                if self.is_same_vectors(f, s):
                    yield [f, s]