{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.Axiom ( Axiom(..), toSAS ) where import Data.Sequence ( Seq ) import qualified Data.Sequence as Seq import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.Builder.Int import FastDownward.SAS.DomainIndex ( DomainIndex ) import qualified FastDownward.SAS.DomainIndex as DomainIndex import FastDownward.SAS.VariableAssignment ( VariableAssignment ) import qualified FastDownward.SAS.VariableAssignment as VariableAssignment import FastDownward.SAS.VariableIndex ( VariableIndex ) import qualified FastDownward.SAS.VariableIndex as VariableIndex data Axiom = Axiom { Axiom -> VariableIndex variable :: VariableIndex , Axiom -> Seq VariableAssignment conditions :: Seq VariableAssignment , Axiom -> DomainIndex pre :: DomainIndex , Axiom -> DomainIndex post :: DomainIndex } deriving ( Int -> Axiom -> ShowS [Axiom] -> ShowS Axiom -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Axiom] -> ShowS $cshowList :: [Axiom] -> ShowS show :: Axiom -> String $cshow :: Axiom -> String showsPrec :: Int -> Axiom -> ShowS $cshowsPrec :: Int -> Axiom -> ShowS Show ) toSAS :: Axiom -> Data.Text.Lazy.Builder.Builder toSAS :: Axiom -> Builder toSAS Axiom{Seq VariableAssignment DomainIndex VariableIndex post :: DomainIndex pre :: DomainIndex conditions :: Seq VariableAssignment variable :: VariableIndex post :: Axiom -> DomainIndex pre :: Axiom -> DomainIndex conditions :: Axiom -> Seq VariableAssignment variable :: Axiom -> VariableIndex ..} = Builder "begin_rule\n" forall a. Semigroup a => a -> a -> a <> forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( forall a. Seq a -> Int Seq.length Seq VariableAssignment conditions ) forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ( \VariableAssignment x -> VariableAssignment -> Builder VariableAssignment.toSAS VariableAssignment x forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq VariableAssignment conditions forall a. Semigroup a => a -> a -> a <> VariableIndex -> Builder VariableIndex.toSAS VariableIndex variable forall a. Semigroup a => a -> a -> a <> Builder " " forall a. Semigroup a => a -> a -> a <> DomainIndex -> Builder DomainIndex.toSAS DomainIndex pre forall a. Semigroup a => a -> a -> a <> Builder " " forall a. Semigroup a => a -> a -> a <> DomainIndex -> Builder DomainIndex.toSAS DomainIndex post forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> Builder "end_rule"