{-# OPTIONS -w -O0 #-}
{-# LANGUAGE CPP, StandaloneDeriving, DeriveDataTypeable, DeriveGeneric #-}
{- |
Module      :  ConstraintCASL/ATC_ConstraintCASL.der.hs
Description :  generated ShATermConvertible, Json instances
Copyright   :  (c) DFKI GmbH 2012
License     :  GPLv2 or higher, see LICENSE.txt

Maintainer  :  Christian.Maeder@dfki.de
Stability   :  provisional
Portability :  non-portable(derive Typeable instances)

Automatic derivation of instances via DrIFT-rule ShATermConvertible, Json
  for the type(s):
'ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA'
'ConstraintCASL.AS_ConstraintCASL.RELATION'
'ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION'
'ConstraintCASL.AS_ConstraintCASL.ATOM'
'ConstraintCASL.AS_ConstraintCASL.ConstraintTERM'
-}

{-
Generated by 'genRules' (automatic rule generation for DrIFT). Don't touch!!
  dependency files:
ConstraintCASL/AS_ConstraintCASL.hs
-}

module ConstraintCASL.ATC_ConstraintCASL () where

import ATerm.Lib
import CASL.AS_Basic_CASL
import CASL.ATC_CASL
import Common.Id
import Common.Json.Instances
import ConstraintCASL.AS_ConstraintCASL
import Data.Aeson(ToJSON, FromJSON)
import Data.Data
import GHC.Generics(Generic)

{-! for ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA derive : ShATermConvertible !-}
{-! for ConstraintCASL.AS_ConstraintCASL.RELATION derive : ShATermConvertible !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION derive : ShATermConvertible !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ATOM derive : ShATermConvertible !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ConstraintTERM derive : ShATermConvertible !-}

{-! for ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA derive : Json !-}
{-! for ConstraintCASL.AS_ConstraintCASL.RELATION derive : Json !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION derive : Json !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ATOM derive : Json !-}
{-! for ConstraintCASL.AS_ConstraintCASL.ConstraintTERM derive : Json !-}

-- Generated by DrIFT, look but don't touch!

instance ShATermConvertible ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA where
  toShATermAux :: ATermTable -> ConstraintFORMULA -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: ConstraintFORMULA
xv = case ConstraintFORMULA
xv of
    Implication_ConstraintFormula a :: ATOMCONJUNCTION
a b :: ATOMCONJUNCTION
b -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 ATOMCONJUNCTION
a
      (att2 :: ATermTable
att2, b' :: Int
b') <- ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att1 ATOMCONJUNCTION
b
      (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 "Implication_ConstraintFormula" [Int
a',
                                                                  Int
b'] []) ATermTable
att2
    Equivalence_ConstraintFormula a :: ATOMCONJUNCTION
a b :: ATOMCONJUNCTION
b -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 ATOMCONJUNCTION
a
      (att2 :: ATermTable
att2, b' :: Int
b') <- ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att1 ATOMCONJUNCTION
b
      (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 "Equivalence_ConstraintFormula" [Int
a',
                                                                  Int
b'] []) ATermTable
att2
    Axiom_ConstraintFormula a :: ATOMCONJUNCTION
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 ATOMCONJUNCTION
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 "Axiom_ConstraintFormula" [Int
a'] []) ATermTable
att1
  fromShATermAux :: Int -> ATermTable -> (ATermTable, ConstraintFORMULA)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
    ShAAppl "Implication_ConstraintFormula" [a :: Int
a, b :: Int
b] _ ->
      case Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: ATOMCONJUNCTION
a') ->
      case Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
b ATermTable
att1 of
      { (att2 :: ATermTable
att2, b' :: ATOMCONJUNCTION
b') ->
      (ATermTable
att2, ATOMCONJUNCTION -> ATOMCONJUNCTION -> ConstraintFORMULA
Implication_ConstraintFormula ATOMCONJUNCTION
a' ATOMCONJUNCTION
b') }}
    ShAAppl "Equivalence_ConstraintFormula" [a :: Int
a, b :: Int
b] _ ->
      case Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: ATOMCONJUNCTION
a') ->
      case Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
b ATermTable
att1 of
      { (att2 :: ATermTable
att2, b' :: ATOMCONJUNCTION
b') ->
      (ATermTable
att2, ATOMCONJUNCTION -> ATOMCONJUNCTION -> ConstraintFORMULA
Equivalence_ConstraintFormula ATOMCONJUNCTION
a' ATOMCONJUNCTION
b') }}
    ShAAppl "Axiom_ConstraintFormula" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: ATOMCONJUNCTION
a') ->
      (ATermTable
att1, ATOMCONJUNCTION -> ConstraintFORMULA
Axiom_ConstraintFormula ATOMCONJUNCTION
a') }
    u :: ShATerm
u -> String -> ShATerm -> (ATermTable, ConstraintFORMULA)
forall a. String -> ShATerm -> a
fromShATermError "ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA" ShATerm
u

instance ShATermConvertible ConstraintCASL.AS_ConstraintCASL.RELATION where
  toShATermAux :: ATermTable -> RELATION -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: RELATION
xv = case RELATION
xv of
    Empty_Relation -> (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 "Empty_Relation" [] []) ATermTable
att0
    Equal_Relation -> (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 "Equal_Relation" [] []) ATermTable
att0
    Id_Relation a :: Id
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> Id -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 Id
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 "Id_Relation" [Int
a'] []) ATermTable
att1
    Relation_Disjunction a :: [RELATION]
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> [RELATION] -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 [RELATION]
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 "Relation_Disjunction" [Int
a'] []) ATermTable
att1
    Inverse_Relation a :: RELATION
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> RELATION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 RELATION
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 "Inverse_Relation" [Int
a'] []) ATermTable
att1
  fromShATermAux :: Int -> ATermTable -> (ATermTable, RELATION)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
    ShAAppl "Empty_Relation" [] _ -> (ATermTable
att0, RELATION
Empty_Relation)
    ShAAppl "Equal_Relation" [] _ -> (ATermTable
att0, RELATION
Equal_Relation)
    ShAAppl "Id_Relation" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, Id)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: Id
a') ->
      (ATermTable
att1, Id -> RELATION
Id_Relation Id
a') }
    ShAAppl "Relation_Disjunction" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, [RELATION])
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: [RELATION]
a') ->
      (ATermTable
att1, [RELATION] -> RELATION
Relation_Disjunction [RELATION]
a') }
    ShAAppl "Inverse_Relation" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, RELATION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: RELATION
a') ->
      (ATermTable
att1, RELATION -> RELATION
Inverse_Relation RELATION
a') }
    u :: ShATerm
u -> String -> ShATerm -> (ATermTable, RELATION)
forall a. String -> ShATerm -> a
fromShATermError "ConstraintCASL.AS_ConstraintCASL.RELATION" ShATerm
u

instance ShATermConvertible ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION where
  toShATermAux :: ATermTable -> ATOMCONJUNCTION -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: ATOMCONJUNCTION
xv = case ATOMCONJUNCTION
xv of
    Atom_Conjunction a :: [ATOM]
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> [ATOM] -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 [ATOM]
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 "Atom_Conjunction" [Int
a'] []) ATermTable
att1
  fromShATermAux :: Int -> ATermTable -> (ATermTable, ATOMCONJUNCTION)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
    ShAAppl "Atom_Conjunction" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, [ATOM])
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: [ATOM]
a') ->
      (ATermTable
att1, [ATOM] -> ATOMCONJUNCTION
Atom_Conjunction [ATOM]
a') }
    u :: ShATerm
u -> String -> ShATerm -> (ATermTable, ATOMCONJUNCTION)
forall a. String -> ShATerm -> a
fromShATermError "ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION" ShATerm
u

instance ShATermConvertible ConstraintCASL.AS_ConstraintCASL.ATOM where
  toShATermAux :: ATermTable -> ATOM -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: ATOM
xv = case ATOM
xv of
    Prefix_Atom a :: RELATION
a b :: [ConstraintTERM]
b -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> RELATION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 RELATION
a
      (att2 :: ATermTable
att2, b' :: Int
b') <- ATermTable -> [ConstraintTERM] -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att1 [ConstraintTERM]
b
      (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 "Prefix_Atom" [Int
a', Int
b'] []) ATermTable
att2
    Infix_Atom a :: ConstraintTERM
a b :: RELATION
b c :: ConstraintTERM
c -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> ConstraintTERM -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 ConstraintTERM
a
      (att2 :: ATermTable
att2, b' :: Int
b') <- ATermTable -> RELATION -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att1 RELATION
b
      (att3 :: ATermTable
att3, c' :: Int
c') <- ATermTable -> ConstraintTERM -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att2 ConstraintTERM
c
      (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 "Infix_Atom" [Int
a', Int
b', Int
c'] []) ATermTable
att3
  fromShATermAux :: Int -> ATermTable -> (ATermTable, ATOM)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
    ShAAppl "Prefix_Atom" [a :: Int
a, b :: Int
b] _ ->
      case Int -> ATermTable -> (ATermTable, RELATION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: RELATION
a') ->
      case Int -> ATermTable -> (ATermTable, [ConstraintTERM])
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
b ATermTable
att1 of
      { (att2 :: ATermTable
att2, b' :: [ConstraintTERM]
b') ->
      (ATermTable
att2, RELATION -> [ConstraintTERM] -> ATOM
Prefix_Atom RELATION
a' [ConstraintTERM]
b') }}
    ShAAppl "Infix_Atom" [a :: Int
a, b :: Int
b, c :: Int
c] _ ->
      case Int -> ATermTable -> (ATermTable, ConstraintTERM)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: ConstraintTERM
a') ->
      case Int -> ATermTable -> (ATermTable, RELATION)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
b ATermTable
att1 of
      { (att2 :: ATermTable
att2, b' :: RELATION
b') ->
      case Int -> ATermTable -> (ATermTable, ConstraintTERM)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
c ATermTable
att2 of
      { (att3 :: ATermTable
att3, c' :: ConstraintTERM
c') ->
      (ATermTable
att3, ConstraintTERM -> RELATION -> ConstraintTERM -> ATOM
Infix_Atom ConstraintTERM
a' RELATION
b' ConstraintTERM
c') }}}
    u :: ShATerm
u -> String -> ShATerm -> (ATermTable, ATOM)
forall a. String -> ShATerm -> a
fromShATermError "ConstraintCASL.AS_ConstraintCASL.ATOM" ShATerm
u

instance ShATermConvertible ConstraintCASL.AS_ConstraintCASL.ConstraintTERM where
  toShATermAux :: ATermTable -> ConstraintTERM -> IO (ATermTable, Int)
toShATermAux att0 :: ATermTable
att0 xv :: ConstraintTERM
xv = case ConstraintTERM
xv of
    Atomar_Term a :: Id
a -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> Id -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 Id
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 "Atomar_Term" [Int
a'] []) ATermTable
att1
    Composite_Term a :: Id
a b :: [ConstraintTERM]
b -> do
      (att1 :: ATermTable
att1, a' :: Int
a') <- ATermTable -> Id -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att0 Id
a
      (att2 :: ATermTable
att2, b' :: Int
b') <- ATermTable -> [ConstraintTERM] -> IO (ATermTable, Int)
forall t.
ShATermConvertible t =>
ATermTable -> t -> IO (ATermTable, Int)
toShATerm' ATermTable
att1 [ConstraintTERM]
b
      (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 "Composite_Term" [Int
a', Int
b'] []) ATermTable
att2
  fromShATermAux :: Int -> ATermTable -> (ATermTable, ConstraintTERM)
fromShATermAux ix :: Int
ix att0 :: ATermTable
att0 = case Int -> ATermTable -> ShATerm
getShATerm Int
ix ATermTable
att0 of
    ShAAppl "Atomar_Term" [a :: Int
a] _ ->
      case Int -> ATermTable -> (ATermTable, Id)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: Id
a') ->
      (ATermTable
att1, Id -> ConstraintTERM
Atomar_Term Id
a') }
    ShAAppl "Composite_Term" [a :: Int
a, b :: Int
b] _ ->
      case Int -> ATermTable -> (ATermTable, Id)
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
a ATermTable
att0 of
      { (att1 :: ATermTable
att1, a' :: Id
a') ->
      case Int -> ATermTable -> (ATermTable, [ConstraintTERM])
forall t.
ShATermConvertible t =>
Int -> ATermTable -> (ATermTable, t)
fromShATerm' Int
b ATermTable
att1 of
      { (att2 :: ATermTable
att2, b' :: [ConstraintTERM]
b') ->
      (ATermTable
att2, Id -> [ConstraintTERM] -> ConstraintTERM
Composite_Term Id
a' [ConstraintTERM]
b') }}
    u :: ShATerm
u -> String -> ShATerm -> (ATermTable, ConstraintTERM)
forall a. String -> ShATerm -> a
fromShATermError "ConstraintCASL.AS_ConstraintCASL.ConstraintTERM" ShATerm
u

deriving instance GHC.Generics.Generic ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA
instance Data.Aeson.ToJSON ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA where
instance Data.Aeson.FromJSON ConstraintCASL.AS_ConstraintCASL.ConstraintFORMULA where

deriving instance GHC.Generics.Generic ConstraintCASL.AS_ConstraintCASL.RELATION
instance Data.Aeson.ToJSON ConstraintCASL.AS_ConstraintCASL.RELATION where
instance Data.Aeson.FromJSON ConstraintCASL.AS_ConstraintCASL.RELATION where

deriving instance GHC.Generics.Generic ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION
instance Data.Aeson.ToJSON ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION where
instance Data.Aeson.FromJSON ConstraintCASL.AS_ConstraintCASL.ATOMCONJUNCTION where

deriving instance GHC.Generics.Generic ConstraintCASL.AS_ConstraintCASL.ATOM
instance Data.Aeson.ToJSON ConstraintCASL.AS_ConstraintCASL.ATOM where
instance Data.Aeson.FromJSON ConstraintCASL.AS_ConstraintCASL.ATOM where

deriving instance GHC.Generics.Generic ConstraintCASL.AS_ConstraintCASL.ConstraintTERM
instance Data.Aeson.ToJSON ConstraintCASL.AS_ConstraintCASL.ConstraintTERM where
instance Data.Aeson.FromJSON ConstraintCASL.AS_ConstraintCASL.ConstraintTERM where