@@ -31,23 +31,25 @@ function flatten_expr!(x)
3131 x
3232end
3333
34- function detime_dvs (op:: Term )
35- if operation (op) isa Sym
36- Sym {Real} (nameof (operation (op)))
37- else
38- Term {Real} (operation (op),detime_dvs .(arguments (op)))
39- end
34+ function detime_dvs (op)
35+ if ! istree (op)
36+ op
37+ elseif operation (op) isa Sym
38+ Sym {Real} (nameof (operation (op)))
39+ else
40+ similarterm (op, operation (op),detime_dvs .(arguments (op)))
41+ end
4042end
41- detime_dvs (op) = op
4243
4344function retime_dvs (op:: Sym ,dvs,iv)
4445 Sym {FnType{Tuple{symtype(iv)}, Real}} (nameof (op))(iv)
4546end
4647
47- function retime_dvs (op:: Term , dvs, iv)
48- similarterm (op, operation (op), retime_dvs .(arguments (op),(dvs,),(iv,)))
48+ function retime_dvs (op, dvs, iv)
49+ istree (op) ?
50+ similarterm (op, operation (op), retime_dvs .(arguments (op),(dvs,),(iv,))) :
51+ op
4952end
50- retime_dvs (op,dvs,iv) = op
5153
5254is_derivative (O:: Term ) = isa (operation (O), Differential)
5355is_derivative (:: Any ) = false
@@ -131,8 +133,8 @@ julia> substitute(ex, Dict([x => z, sin(z) => z^2]))
131133"""
132134substitute (expr:: Num , s:: Union{Pair, Vector, Dict} ; kw... ) = Num (substituter (s)(value (expr); kw... ))
133135# TODO : move this to SymbolicUtils
134- substitute (expr:: Term , s:: Pair ; kw... ) = substituter ([s[1 ] => s[2 ]])(expr; kw... )
135- substitute (expr:: Term , s:: Vector ; kw... ) = substituter (s)(expr; kw... )
136+ substitute (expr, s:: Pair ; kw... ) = substituter ([s[1 ] => s[2 ]])(expr; kw... )
137+ substitute (expr, s:: Vector ; kw... ) = substituter (s)(expr; kw... )
136138
137139substituter (pair:: Pair ) = substituter ((pair,))
138140function substituter (pairs)
@@ -157,7 +159,7 @@ function states_to_sym(states::Set)
157159 function _states_to_sym (O)
158160 if O isa Equation
159161 Expr (:(= ), _states_to_sym (O. lhs), _states_to_sym (O. rhs))
160- elseif O isa Term
162+ elseif istree (O)
161163 if isa (operation (O), Sym)
162164 O in states && return tosymbol (O)
163165 # dependent variables
0 commit comments