@@ -38,12 +38,6 @@ function equivalent(arg1::Real, arg2::Real)
3838 return arg1 == arg2
3939end
4040
41- function equivalent (left, right)
42- left_ids, right_ids = dc. get_free_indices .((left, right))
43-
44- return can_remap (left_ids, right_ids)
45- end
46-
4741function equivalent (left:: Variable , right:: Variable )
4842 left_ids, right_ids = dc. get_free_indices .((left, right))
4943
@@ -58,23 +52,24 @@ function equivalent(left::Zero, right::Zero)
5852 return can_remap (dc. get_free_indices (left), dc. get_free_indices (right))
5953end
6054
61- function equivalent (left:: BinaryOperation , right:: BinaryOperation )
62- if typeof (left) != typeof (right)
63- return false
64- end
55+ function equivalent (left:: BinaryOperation{T} , right:: BinaryOperation{T} ) where {T}
56+ return equivalent (left. arg1, right. arg1) && equivalent (left. arg2, right. arg2)
57+ end
6558
66- same_types =
67- (
68- typeof (left. arg1) == typeof (right. arg1) &&
69- typeof (left. arg2) == typeof (right. arg2)
70- ) ||
71- (typeof (left. arg1) == typeof (right. arg2) && typeof (left. arg2) == typeof (right. arg1))
59+ function equivalent (left:: BinaryOperation{dc.Mult} , right:: BinaryOperation{dc.Mult} )
60+ return (equivalent (left. arg1, right. arg1) && equivalent (left. arg2, right. arg2)) ||
61+ (equivalent (left. arg1, right. arg2) && equivalent (left. arg2, right. arg1))
62+ end
7263
73- return same_types &&
74- (equivalent (left. arg1, right. arg1) && equivalent (left. arg2, right. arg2)) ||
64+ function equivalent (left :: BinaryOperation{dc.Add} , right :: BinaryOperation{dc.Add} )
65+ return (equivalent (left. arg1, right. arg1) && equivalent (left. arg2, right. arg2)) ||
7566 (equivalent (left. arg1, right. arg2) && equivalent (left. arg2, right. arg1))
7667end
7768
78- function equivalent (arg1:: T , arg2:: T ) where {T<: UnaryOperation }
69+ function equivalent (arg1:: UnaryOperation{T} , arg2:: UnaryOperation{T} ) where {T}
7970 return equivalent (arg1. arg, arg2. arg)
8071end
72+
73+ function equivalent (arg1:: T1 , arg2:: T2 ) where {T1,T2}
74+ return false
75+ end
0 commit comments