{-# OPTIONS -w -O0 #-}
{-# LANGUAGE CPP, StandaloneDeriving, DeriveDataTypeable, DeriveGeneric #-}
module ATC.Consistency () where
import ATerm.Lib
import Common.AS_Annotation
import Common.Consistency
import Common.Doc
import Common.DocUtils
import Common.Json.Instances
import Common.Result
import Data.Aeson(ToJSON, FromJSON)
import Data.Data
import GHC.Generics(Generic)
deriving instance GHC.Generics.Generic Common.Consistency.Conservativity
instance Data.Aeson.ToJSON Common.Consistency.Conservativity where
instance Data.Aeson.FromJSON Common.Consistency.Conservativity where
instance ShATermConvertible Common.Consistency.Conservativity where
toShATermAux :: ATermTable -> Conservativity -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: Conservativity
xv = case Conservativity
xv of
Inconsistent -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "Inconsistent" [] []) ATermTable
att0
Unknown a :: String
a -> do
(att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> String -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 String
a
(ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "Unknown" [Int
a'] []) ATermTable
att1
None -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "None" [] []) ATermTable
att0
PCons -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "PCons" [] []) ATermTable
att0
Cons -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "Cons" [] []) ATermTable
att0
Mono -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "Mono" [] []) ATermTable
att0
Def -> (ATermTable, Int) -> IO (ATermTable, Int)
forall (m :: * -> *) a. Monad m => a -> m a
return ((ATermTable, Int) -> IO (ATermTable, Int))
-> (ATermTable, Int) -> IO (ATermTable, Int)
forall a b. (a -> b) -> a -> b
$ ShATerm -> ATermTable -> (ATermTable, Int)
addATerm (String -> [Int] -> [Int] -> ShATerm
ShAAppl "Def" [] []) ATermTable
att0
fromShATermAux :: Int -> ATermTable -> (ATermTable, Conservativity)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
ShAAppl "Inconsistent" [] _ -> (ATermTable
att0, Conservativity
Inconsistent)
ShAAppl "Unknown" [a :: Int
a] _ ->
case Int -> ATermTable -> (ATermTable, String)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
{ (att1 :: ATermTable
att1, a' :: String
a') ->
(ATermTable
att1, String -> Conservativity
Unknown String
a') }
ShAAppl "None" [] _ -> (ATermTable
att0, Conservativity
None)
ShAAppl "PCons" [] _ -> (ATermTable
att0, Conservativity
PCons)
ShAAppl "Cons" [] _ -> (ATermTable
att0, Conservativity
Cons)
ShAAppl "Mono" [] _ -> (ATermTable
att0, Conservativity
Mono)
ShAAppl "Def" [] _ -> (ATermTable
att0, Conservativity
Def)
u :: ShATerm
u -> String -> ShATerm -> (ATermTable, Conservativity)
forall a. String -> ShATerm -> a
fromShATermError "Common.Consistency.Conservativity" ShATerm
u