def _from_Monomial_on_basis(self, J): r""" Given a quasi-symmetric monomial function, this method returns the expansion into the dual immaculate basis. INPUT: - ``J`` -- a composition OUTPUT: - A quasi-symmetric function in the dual immaculate basis. EXAMPLES: sage: dI = QuasiSymmetricFunctions(QQ).dI() sage: dI._from_Monomial_on_basis(Composition([])) dI[] sage: dI._from_Monomial_on_basis(Composition([2,1])) -dI[1, 1, 1] - dI[1, 2] + dI[2, 1] sage: dI._from_Monomial_on_basis(Composition([3,1,2])) -dI[1, 1, 1, 1, 1, 1] + dI[1, 1, 1, 1, 2] + dI[1, 1, 1, 3] - dI[1, 1, 4] - dI[1, 2, 1, 1, 1] + dI[1, 2, 3] + dI[2, 1, 1, 1, 1] - dI[2, 1, 1, 2] + dI[2, 2, 1, 1] - dI[2, 2, 2] - dI[3, 1, 1, 1] + dI[3, 1, 2] """ n = J.size() C = Compositions() C_n = Compositions(n) mat = self._matrix_monomial_to_dual_immaculate(n) column = C_n.list().index(J) return self.sum_of_terms( (C(I), mat[C_n.list().index(I)][column]) for I in C_n)