-- | Theory related Drasil concepts, used across Drasil.
module Data.Drasil.TheoryConcepts where

import Language.Drasil (cn', CI, commonIdeaWithDict)
import Data.Drasil.Domains (softEng)

-- | These are internal-to-Drasil common ideas, and need to be defined at the 
-- same time as theories.
dataDefn, genDefn, inModel, thModel :: CI
-- | Data definition.
dataDefn :: CI
dataDefn = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict "dataDefn" (String -> NP
cn' "data definition")    "DD"  [IdeaDict
softEng]
-- | General definition.
genDefn :: CI
genDefn  = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict "genDefn"  (String -> NP
cn' "general definition") "GD"  [IdeaDict
softEng]
-- | Instance model.
inModel :: CI
inModel  = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict "inModel"  (String -> NP
cn' "instance model")     "IM"  [IdeaDict
softEng]
-- | Theoretical model.
thModel :: CI
thModel  = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict "thModel"  (String -> NP
cn' "theoretical model")  "TM"  [IdeaDict
softEng]