@@ -100,32 +100,24 @@ end
100
100
101
101
# variable substitution
102
102
"""
103
- substitute(expr::Operation, s::Pair{Operation, Operation} )
104
- substitute(expr::Operation, s::Dict{Operation, Operation} )
105
- substitute(expr::Operation, s::Vector{Pair{Operation, Operation}} )
103
+ substitute(expr::Operation, s::Pair)
104
+ substitute(expr::Operation, s::Dict)
105
+ substitute(expr::Operation, s::Vector)
106
106
107
- Performs the substitution `Operation => Operation ` on the `expr` Operation.
107
+ Performs the substitution `Operation => val ` on the `expr` Operation.
108
108
"""
109
- substitute (expr:: Constant , s) = nothing
109
+ substitute (expr:: Constant , s) = expr
110
+ substitute (expr:: Operation , s:: Pair ) = _substitute (expr, [s[1 ]], [s[2 ]])
111
+ substitute (expr:: Operation , dict:: Dict ) = _substitute (expr, keys (dict), values (dict))
112
+ substitute (expr:: Operation , s:: Vector ) = _substitute (expr, first .(s), last .(s))
110
113
111
- function substitute (expr:: Operation , s :: Pair{Operation, Operation} )
112
- substitute (expr,Dict (to_symbolic (s[ 1 ]) => to_symbolic (s[ 2 ] )))
114
+ function _substitute (expr, ks, vs )
115
+ _substitute (expr, Dict (map (Pair, map ( to_symbolic, ks), map (to_symbolic, vs) )))
113
116
end
114
117
115
- function substitute (expr:: Operation , dict:: Dict{Operation,Operation} )
116
- substitute (expr,Dict (map (Pair,
117
- map (to_symbolic, keys (dict)),
118
- map (to_symbolic, values (dict)))))
119
- end
120
-
121
- function substitute (expr:: Operation , s:: Vector )
122
- substitute (expr,Dict (map (Pair,
123
- map (to_symbolic, first .(s)),
124
- map (to_symbolic, last .(s)))))
125
- end
126
-
127
- function substitute (expr:: Operation , s:: Dict{<:SymbolicUtils.Term,<:SymbolicUtils.Term} )
128
- SymbolicUtils. RuleSet ([SymbolicUtils. @rule (~ x:: (x->haskey(s, x) ) => s[~ x])])(expr) |> to_mtk
118
+ function _substitute (expr, dict:: Dict )
119
+ sub = SymbolicUtils. RuleSet ([SymbolicUtils. @rule (~ x:: (x->haskey(dict, x) ) => dict[~ x])])
120
+ to_mtk (simplify (sub (expr)))
129
121
end
130
122
131
123
@deprecate substitute_expr! (expr,s) substitute (expr,s)
0 commit comments