\begin{ccRefConcept}{PolynomialTraits_d::Permute} \ccDefinition This \ccc{AdaptableFunctor} permutes the variables of the given polynomial with respect to a permutation $\sigma$. $\sigma$ is given by the iterator range of length \ccc{PolynomialTraits_d::d}, containing the second row of the permutation. For instance, let $p$ be a polynomial in 4 variables and it is intended to change the order of the variables such that $x_0 \mapsto x_2$, $x_1 \mapsto x_0$, $x_2 \mapsto x_1$ and $x_3 \mapsto x_3$. In this case the iterator range should contain the sequence $[2,0,1,3]$. \ccRefines \ccc{AdaptableFunctor} \ccTypes \ccSetThreeColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{xxx}{} \ccTypedef{typedef PolynomialTraits_d::Polynomial_d result_type;}{}\ccGlue \ccOperations \ccCreationVariable{fo} \ccOperations \ccMethod{ template result_type operator()(PolynomialTraits_d::Polynomial_d p, Input_iterator begin, Input_iterator end);}{ Returns $p$ with interchanged variables as defined by the iterator range. %Change order of variables in $p$ as defined by the iterator range. \ccPrecond{(end-begin == \ccc{PolynomialTraits_d::d})} \ccPrecond{\ccc{std::iterator_traits< InputIterator >::value_type} is convertible to int.} \ccPrecond{The iterator range contains each value in $\{0,\dots,d-1\}$ exactly once. } } %\ccHasModels \ccSeeAlso \ccRefIdfierPage{Polynomial_d}\\ \ccRefIdfierPage{PolynomialTraits_d}\\ \end{ccRefConcept}