casDeclareEquation :: Session a => a -> CMD -> IO ()
casDeclareEquation sess (Ass c def) =
    do
      let e1 = exportExp $ opDeclToOp c
          e2 = exportExp def
      putStrLn $ e1 ++ ":=" ++ e2
      hPutStrLn (inp sess) $ e1 ++ ":=" ++ e2 ++ ";"
      res <- getNextResultOutput (outp sess)
      putStrLn $ "Declaration Result: " ++ res
      return ()
casDeclareEquation :: Session a => a -> CMD -> IO ()
casDeclareEquation sess (Ass c def) =
    do
      let e1 = exportExp $ opDeclToOp c
          e2 = exportExp def
      putStrLn $ e1 ++ ":=" ++ e2
      hPutStrLn (inp sess) $ e1 ++ ":=" ++ e2 ++ ";"
      res <- getNextResultOutput (outp sess)
      putStrLn $ "Declaration Result: " ++ res
      return ()
casDeclareEquation sess (Ass c def) =
    do
      let e1 = exportExp $ opDeclToOp c
          e2 = exportExp def
      putStrLn $ e1 ++ ":=" ++ e2
      hPutStrLn (inp sess) $ e1 ++ ":=" ++ e2 ++ ";"
      res <- getNextResultOutput (outp sess)
      putStrLn $ "Declaration Result: " ++ res
      return ()