zsyntax-0.2.0.0: test/Main.hs
import Zsyntax
import qualified Otter as O
import System.Exit (exitFailure)
import qualified Data.Set as S (fromList)
import qualified Data.MultiSet as M
import Data.List.NonEmpty (fromList)
import Zsyntax.ReactionList
type Atom = BioFormula String
main :: IO ()
main = checkSequent goal
checkSequent :: Sequent Atom -> IO ()
checkSequent g =
case O.extractResults 2000 (fst $ search (toLabelledGoal g)) of
O.AllResults _ -> putStrLn "test passed."
O.NoResults _ -> putStrLn "test failed." >> exitFailure
ax :: Ord a => [a] -> [a] -> [a] -> Axiom (BioFormula a)
ax xs ys rl =
axiom (fromList $ fmap BioAtom xs)
(justCS $ fromCSCtxts [CSC SupersetClosed
(M.fromList (fmap BioAtom rl))])
(fromList $ fmap BioAtom ys)
goal :: Sequent Atom
goal = SQ (S.fromList axioms) (M.fromList from) to
where
axioms :: [Axiom Atom]
axioms =
[ ax ["ICL"] ["MUS81"] mempty
, ax ["MUS81", "FANCD21"] ["FAN1"] mempty
, ax ["FANCM", "ATR"] ["FAcore"] ["CHKREC"]
, ax ["FANCM", "ATM"] ["FAcore"] ["CHKREC"]
, ax ["FAcore", "ATM"] ["FANCD21"] ["USP1"]
, ax ["FAcore", "ATR"] ["FANCD21"] ["USP1"]
, ax ["FAcore", "H2AX", "DSB"] ["FANCD21"] ["USP1"]
, ax ["ICL"] ["FANCM"] ["CHKREC"]
, ax ["FAN1"] ["DSB"] ["HRR", "NHEJ"]
, ax ["XPF"] ["DBS"] ["HRR", "NHEJ"]
, ax ["MUS81", "FAN1"] ["ADD"] ["PCNATLS"]
, ax ["ATM"] ["ATM", "ATM"] mempty
, ax ["ICL"] ["ICL", "ICL"] mempty
]
from :: [Formula Atom]
from = [atom (BioAtom "ICL"), atom (BioAtom "ATM")]
to :: Formula Atom
to = conj (atom (BioAtom "DSB")) (atom (BioAtom "ADD"))