@@ -27,6 +27,7 @@ const AbstractMultiSubstitution = Union{
2727}
2828const AbstractSubstitution = Union{Substitution,AbstractMultiSubstitution}
2929const Substitutions = Tuple{Vararg{AbstractSubstitution}}
30+ const _Substitutions = Tuple{Vararg{Substitution}}
3031
3132abstract type AbstractSubstitutionType end
3233struct Subs <: AbstractSubstitutionType end
@@ -40,12 +41,20 @@ is equivalent to:
4041
4142 subs(polynomial, (x=>1, y=>2))
4243"""
43- function substitute (st:: _AST , p:: _APL , s:: AbstractMultiSubstitution )
44- return substitute (st, p, _flatten_subs (s))
44+ function substitute_fallback (st:: _AST , p:: _APL , s:: Substitutions )
45+ return substitute_fallback (st, p, _flatten_subs (s... ))
46+ end
47+
48+ function substitute (st:: _AST , p:: _APL , s:: AbstractSubstitution... )
49+ return substitute (st, p, s)
50+ end
51+
52+ function substitute (st:: _AST , p:: _APL , s:: Substitutions )
53+ return substitute_fallback (st, p, s)
4554end
4655
4756# # Variables
48- function substitute (st:: _AST , v:: AbstractVariable , s:: Substitutions )
57+ function substitute_fallback (st:: _AST , v:: AbstractVariable , s:: Substitutions )
4958 return substitute (st, v, s... )
5059end
5160
@@ -127,7 +136,7 @@ function power_promote(
127136 )
128137end
129138
130- function substitute (st:: _AST , m:: AbstractMonomial , s:: Substitutions )
139+ function substitute_fallback (st:: _AST , m:: AbstractMonomial , s:: Substitutions )
131140 if isconstant (m)
132141 return one (power_promote (typeof (st), variables (m), s))
133142 else
@@ -136,7 +145,7 @@ function substitute(st::_AST, m::AbstractMonomial, s::Substitutions)
136145end
137146
138147# # Terms
139- function substitute (st:: _AST , t:: AbstractTerm , s:: Substitutions )
148+ function substitute_fallback (st:: _AST , t:: AbstractTerm , s:: Substitutions )
140149 return coefficient (t) * substitute (st, monomial (t), s)
141150end
142151
163172# # Polynomials
164173_polynomial (α) = α
165174_polynomial (p:: _APL ) = polynomial (p)
166- function substitute (st:: _AST , p:: AbstractPolynomial , s:: Substitutions )
175+ function substitute_fallback (st:: _AST , p:: AbstractPolynomial , s:: Substitutions )
167176 if iszero (p)
168177 _polynomial (substitute (st, zero_term (p), s))
169178 else
@@ -189,7 +198,7 @@ function MA.promote_operation(
189198end
190199
191200# # Fallbacks
192- function substitute (st:: _AST , p:: _APL , s:: Substitutions )
201+ function substitute_fallback (st:: _AST , p:: _APL , s:: Substitutions )
193202 return substitute (st, polynomial (p), s)
194203end
195204function substitute (st:: _AST , q:: RationalPoly , s:: Substitutions )
0 commit comments