ADD(x, x) against a+a                                      match     {'x': 'param#0'}
ADD(x, x) against a+b                                      no match  
ADD(x, cvar c) against a+5                                 match     {'x': 'param#0', 'c': 'const'}
ADD(x, cvar c) against a+b                                 no match  
ADD(x, cvar c) against a+5 with dtype f32                  no match  
ADD(x, cvar c) against f+5.0 with dtype f32                match     {'x': 'param#2', 'c': 'const'}
MUL(ADD(x, c1), c2) against (a+3)*4                        match     {'x': 'param#0', 'c1': 'const', 'c2': 'const'}
ADD(x, x) against (a+b)+(a+b)                              match     {'x': 'add'}
ADD(x, x) against (a+b)+(b+a)  (no canonical order yet)    no match  
CONST(arg=7) against CONST 7                               match     {'k': 'const'}
CONST(arg=7) against CONST 8                               no match  
