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

import Drasil.Database (mkUid)
import Language.Drasil (cn', CI, commonIdea)

import Drasil.Metadata.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 = UID -> NP -> String -> [IdeaDict] -> CI
commonIdea (String -> UID
mkUid String
"dataDefn") (String -> NP
cn' String
"data definition")    String
"DD"  [IdeaDict
softEng]
-- | General definition.
genDefn :: CI
genDefn  = UID -> NP -> String -> [IdeaDict] -> CI
commonIdea (String -> UID
mkUid String
"genDefn")  (String -> NP
cn' String
"general definition") String
"GD"  [IdeaDict
softEng]
-- | Instance model.
inModel :: CI
inModel  = UID -> NP -> String -> [IdeaDict] -> CI
commonIdea (String -> UID
mkUid String
"inModel")  (String -> NP
cn' String
"instance model")     String
"IM"  [IdeaDict
softEng]
-- | Theoretical model.
thModel :: CI
thModel  = UID -> NP -> String -> [IdeaDict] -> CI
commonIdea (String -> UID
mkUid String
"thModel")  (String -> NP
cn' String
"theoretical model")  String
"TM"  [IdeaDict
softEng]