trans env (Add e1 e2) = do
  (t1, e1') <- trans env e1
  (t2, e2') <- trans env e2
  unless (t1 == Nat && t2 == Nat) $ throwError "Addition is only allowed for numbers!"
  return (Nat, Add e1' e2')
trans env (Add e1 e2) = do
  (t1, e1') <- trans env e1
  (t2, e2') <- trans env e2
  unless (t1 == Nat && t2 == Nat) $ throwError "Addition is only allowed for numbers!"
  return (Nat, Add e1' e2')
trans env (Add e1 e2) = do
  (t1, e1') <- trans env e1
  (t2, e2') <- trans env e2
  unless (t1 == Nat && t2 == Nat) $ throwError "Addition is only allowed for numbers!"
  return (Nat, Add e1' e2')