comb1 :: (Expr, Value) -> (Expr, Value) -> [(Expr, Value)]
comb1 (e1,v1) (e2,v2) = [(App Add e1 e2, v1+v2), (App Sub e1 e2, v2-v1)] ++
                        if 1 < v1
                          then [(App Mul e1 e2, v1*v2)] ++ [(App Div e1 e2, q) | r == 0]
                          else []
                        where (q,r) = divMod v2 v1
comb1 :: (Expr, Value) -> (Expr, Value) -> [(Expr, Value)]
comb1 (e1,v1) (e2,v2) = [(App Add e1 e2, v1+v2), (App Sub e1 e2, v2-v1)] ++
                        if 1 < v1
                          then [(App Mul e1 e2, v1*v2)] ++ [(App Div e1 e2, q) | r == 0]
                          else []
                        where (q,r) = divMod v2 v1
comb1 (e1,v1) (e2,v2) = [(App Add e1 e2, v1+v2), (App Sub e1 e2, v2-v1)] ++
                        if 1 < v1
                          then [(App Mul e1 e2, v1*v2)] ++ [(App Div e1 e2, q) | r == 0]
                          else []
                        where (q,r) = divMod v2 v1