{-# OPTIONS_GHC -Wall #-}
module DatabaseDesign.Ampersand
   ( -- Data Constructors:
     A_Context
   , P_Context(..), P_Population(..), PairView(..), PairViewSegment(..), SrcOrTgt(..), P_Rule(..), Term(..), TermPrim(..), P_Sign(..), P_Concept(..), P_Declaration(..), P_Pattern(..), P_Gen(..)
   , P_Markup(..), PRef2Obj(..), PPurpose(..), PMeaning(..), Meta(..), MetaObj(..)
   , A_Concept(..), A_Gen(..)
   , Sign(..), ConceptDef(..), ConceptStructure(..)
   , Activity(..)
   , AMeaning(..)
   , Quad(..), RuleClause(..)
   , Fswitchboard(..), ECArule(..), Event(..), InsDel(..) -- (required for --haskell output)
   , Pattern(..)
   , Declaration(..)
   , IdentityDef(..)
   , ViewDef(..)
   , IdentitySegment(..)
   , ViewSegment(..)
   , Expression(..)
   , Population(..)
   , Fspc(..), concDefs
   , PlugSQL(..), SqlField(..), SqlType(..), PlugInfo(..)
   , PAclause(..)
   , Rule(..)
   , Process(..) , FProcess(..)
   , Prop(..), RuleOrigin(..)
   , Lang(..)
   , SqlFieldUsage(..)
   , DnfClause(..), Clauses(..)
   , Options(..), DocTheme(..)
   , Picture(..), writePicture , PictureReq(..), makePicture
   , FilePos(..), Origin(..), Pos(Pos)
   , FPA(..), FPcompl(..)
   , mkPair
   -- * Classes:
   , Association(..), flp
   , Collection(..)
   , Identified(..)
   , ProcessStructure(..)
   , ObjectDef(..)
   , Relational(..)
   , Interface(..)
   , SubInterface(..)
   , Object(..)
   , Plugable(..)
   , Motivated(..)
   , Traced(..)
   , Language(..)
   , FPAble(..)
   , ShowHS(..), ShowHSName(..), haskellIdentifier
   -- * Functions on concepts
   , (<==>),meet,join,sortWith,atomsOf
   , smallerConcepts, largerConcepts, rootConcepts
   -- * Functions on relations
   -- * Functions on rules
   -- * Functions on expressions:
   , conjNF, disjNF, simplify
   , cfProof,dfProof,nfProof,normPA
   , lookupCpt
   , showPrf
   , notCpl, isCpl, isPos, isNeg, foldrMapExpression
      , (.==.), (.|-.), (./\.), (.\/.), (.-.), (./.), (.\.), (.<>.), (.:.), (.!.), (.*.)
   , deMorganERad, deMorganECps, deMorganEUni, deMorganEIsc
   , exprUni2list, exprIsc2list, exprCps2list, exprRad2list, exprPrd2list
   -- * Functions with plugs:
   , plugFields, tblcontents, plugpath, fldauto, requires, requiredFields, isPlugIndex
   -- * Parser related stuff
   , parseADL1pExpr, CtxError 
   , createFspec
   , getGeneralizations, getSpecializations
    -- * Type checking and calculus
   , Guarded(..), pCtx2aCtx
   , makeFspec
    -- * Generators of output
   , generateAmpersandOutput
   -- * Prettyprinters
   , ShowADL(..), showSQL, showSign
   -- * Functions with Options
   , getOptions
   , verboseLn, verbose
   , FileFormat(..),helpNVersionTexts
   -- * Other functions
   , eqCl, showErr, unCap,upCap,escapeNonAlphaNum, fatalMsg
   , ampersandVersionStr, ampersandVersionWithoutBuildTimeStr
   , DatabaseDesign.Ampersand.Basics.putStr
   , DatabaseDesign.Ampersand.Basics.hGetContents
   , DatabaseDesign.Ampersand.Basics.hPutStr
   , DatabaseDesign.Ampersand.Basics.hPutStrLn
   , DatabaseDesign.Ampersand.Basics.readFile
   , DatabaseDesign.Ampersand.Basics.writeFile
   -- * Stuff that should probably not be in the prototype
   , A_Markup(..), blocks2String, aMarkup2String, PandocFormat(..), Meaning(..)
   , rulefromProp
   , fullContents, Paire, srcPaire,trgPaire
   , Purpose(..), ExplObj(..)
   )
where
import DatabaseDesign.Ampersand.Core.AbstractSyntaxTree
import DatabaseDesign.Ampersand.Fspec.Fspec
import DatabaseDesign.Ampersand.Fspec.FPA
import DatabaseDesign.Ampersand.ADL1 
import DatabaseDesign.Ampersand.Classes
import DatabaseDesign.Ampersand.Basics 
import DatabaseDesign.Ampersand.Fspec
import DatabaseDesign.Ampersand.Input
import DatabaseDesign.Ampersand.Misc
import DatabaseDesign.Ampersand.Components 
import DatabaseDesign.Ampersand.ADL1.Expression (isPos,isNeg,foldrMapExpression)
import DatabaseDesign.Ampersand.Fspec.ToFspec.NormalForms
import DatabaseDesign.Ampersand.InputProcessing
import DatabaseDesign.Ampersand.ADL1.P2A_Converters