expr_add.li:  //-- 0 + E -> E
expr_add.li:  //-- E + 0 -> E
expr_add.li:  //-- C1 + C2 -> C3
expr_and.li:  //-- -1 & E -> E  
expr_and.li:  //-- E & -1 -> E
expr_and.li:  //-- C1 & C2 -> C3
expr_and.li:  //-- E & E -> E
expr_and.li:  //-- 0  & E -> 0
expr_and.li:  //-- E & 0  -> 0
expr_div.li:  //-- E / 0   -> Error.
expr_div.li:  //-- E /   1 -> E
expr_div.li:  //-- E /  -1 -> - E
expr_div.li:  //-- E / 2^n -> E >> n
expr_div.li:  //-- C1 / C2 -> C3
expr_div.li:  //--  E /  E ->  1
expr_div.li:  //-- -E /  E -> -1
expr_div.li:  //--  E / -E -> -1
expr_div.li:  //-- 0 / E -> 0
expr_mod.li:  //-- E %   0 -> Error
expr_mod.li:  //-- E % 2^n -> E & (2^n -1)
expr_mod.li:  //-- C1 % C2 -> C3
expr_mod.li:  //-- E % E -> 0
expr_mod.li:  //-- 0 % E -> 0
expr_mod.li:  //-- E %   1 -> 0
expr_mod.li:  //-- E %  -1 -> 0
expr_mul.li:  //-- 1   * E -> E
expr_mul.li:  //-- -1  * E -> - E
expr_mul.li:  //-- 2^n * E -> E << n
expr_mul.li:  //-- E *   1 -> E
expr_mul.li:  //-- E *  -1 -> - E
expr_mul.li:  //-- E * 2^n -> E << n
expr_mul.li:  //-- C1 * C2 -> C3
expr_mul.li:  //-- 0   * E -> 0
expr_mul.li:  //-- E *   0 -> 0
expr_neg.li:  //-- - - E -> E 
expr_neg.li:  //-- - C1 -> C2
expr_not.li:  //-- ~ (~ E1 & ~ E2) -> E1 | E2
expr_not.li:  //-- ~ (~ E1 | ~ E2) -> E1 & E2
expr_not.li:  //-- ~ ~ E -> E
expr_not.li:  //-- ~ C1 -> C2
expr_or.li:  //-- 0  | E -> E
expr_or.li:  //-- E | 0  -> E
expr_or.li:  //-- C1 | C2 -> C3
expr_or.li:  //-- (! E1 & E2) | (E1 & ! E2) -> E1 ^ E2 (A lot of possibilities, but see '^' in NUMERIC)
expr_or.li:  //-- E | E                     -> E
expr_or.li:  //-- -1 | E -> -1  
expr_or.li:  //-- E | -1 -> -1
expr_shift_l.li:  //-- E <<  0 -> E  
expr_shift_l.li:  //-- C1 << C2  -> C3
expr_shift_l.li:  //-- C1 << -C2 -> Error.
expr_shift_l.li:  //-- 0 << E   -> 0
expr_shift_l.li:  //-- E << -C2 -> Error.
expr_shift_r.li:  //-- E >>  0 -> E  
expr_shift_r.li:  //-- C1 >> C2  -> C3
expr_shift_r.li:  //-- C1 >> -C2 -> Error.
expr_shift_r.li:  //-- E(unsigned) >> E(unsigned) -> 0
expr_shift_r.li:  //-- 0 >> E            -> 0
expr_shift_r.li:  //-- -1(signed) >> E   -> -1(signed)
expr_shift_r.li:  //-- E >> -C2 -> Error.
expr_sub.li:  //-- E1 - - E2 -> E1 + E2
expr_sub.li:  //-- 0  - E   -> - E
expr_sub.li:  //-- -1 - E   -> ~ E  
expr_sub.li:  //-- E  - 0   -> E
expr_sub.li:  //-- -E - 1   -> ~ E
expr_sub.li:  //-- E - -C   -> E + C
expr_sub.li:  //-- C1 - C2 -> C3
expr_sub.li:  //-- E  -  E  -> 0
expr_sub.li:  //-- E1 - ((E1 / E2) * E2) -> E1 % E2 
expr_xor.li:  //-- 0  ^ E -> E
expr_xor.li:  //-- -1 ^ E -> ~ E  
expr_xor.li:  //-- E ^ 0  -> E
expr_xor.li:  //-- E ^ -1 -> ~ E
expr_xor.li:  //-- C1 ^ C2 -> C3
expr_xor.li:  //-- E ^ E -> 0
