+/** Alternating Euler sum or colored MZV. */
+class zeta2_SERIAL { public: static unsigned serial; };
+template<typename T1, typename T2>
+inline function zeta(const T1& p1, const T2& p2) {
+ return function(zeta2_SERIAL::serial, ex(p1), ex(p2));
+}
+class zeta_SERIAL;
+template<> inline bool is_the_function<class zeta_SERIAL>(const ex& x)
+{
+ return is_the_function<zeta1_SERIAL>(x) || is_the_function<zeta2_SERIAL>(x);
+}
+
+/** Polylogarithm and multiple polylogarithm. */
+DECLARE_FUNCTION_2P(Li)
+
+/** Nielsen's generalized polylogarithm. */
+DECLARE_FUNCTION_3P(S)
+
+/** Harmonic polylogarithm. */
+DECLARE_FUNCTION_2P(H)