ideas-statistics-1.0: src/Domain/Statistics/Symbols.hs
-----------------------------------------------------------------------------
-- Copyright 2020, Ideas project team. This file is distributed under the
-- terms of the Apache License 2.0. For more information, see the files
-- "LICENSE.txt" and "NOTICE.txt", which are included in the distribution.
-----------------------------------------------------------------------------
{- Implements symbols for the statistics domain. The only symbols that are
- re-used are the true and the false symbols from the Logic1 module.
-}
module Domain.Statistics.Symbols
( -- cChoiceSymbol
cConstSymbol
, cDataSymbol
, componentSymbol
-- , conclusionSymbol
, derivedSymbol
, falseSymbol
, initialSymbol
, leftSidedSymbol
, rightSidedSymbol
-- , sidedSymbol
, singleSampleSymbol
, tTestOneSymbol
, tTestPairedSymbol
, tTestTwoSymbol
, rPearsonSymbol
, anovaSymbol
, chiSquaredSymbol
, dependentSymbol, independentSymbol
-- , testTypeSymbol
, toOMSymbol
, trueSymbol
, twoSampleSymbol
, twoSidedSymbol
, zTestSymbol
, rejectH0Symbol, acceptH0Symbol, dontRejectH0Symbol, rejectH1Symbol
, acceptH1Symbol, dontRejectH1Symbol
, toTermBool, fromTermBool
) where
import Ideas.Common.Rewriting.Term hiding (trueSymbol, falseSymbol)
import qualified Ideas.Text.OpenMath.Dictionary.Logic1 as L
import Ideas.Common.Id
import qualified Ideas.Text.OpenMath.Symbol as OM
componentSymbol :: Symbol
componentSymbol = newSymbol "stats.component"
-- cChoiceSymbol -- component data symbol
cConstSymbol -- component expression symbol, filtered in OM output
, cDataSymbol -- component relation symbol, filtered in OM output
-- , conclusionSymbol -- All of these symbols up to intialSymbol are tied to a
, derivedSymbol -- constructor from Domain.Statistics.ComponentSet
, initialSymbol --
, leftSidedSymbol --
, rightSidedSymbol --
-- , sidedSymbol --
, singleSampleSymbol --
, tTestOneSymbol --
, tTestPairedSymbol --
, tTestTwoSymbol -- when the step is in the initial set
-- , testTypeSymbol -- when the step is derived
, twoSampleSymbol
, twoSidedSymbol
, zTestSymbol
, rPearsonSymbol
, anovaSymbol
, chiSquaredSymbol
, dependentSymbol
, independentSymbol :: Symbol
cDataSymbol = newSymbol "stats.cdata"
-- cChoiceSymbol = newSymbol "stats.cchoice"
cConstSymbol = newSymbol "stats.cconst"
--testTypeSymbol = newSymbol "stats.testtype"
--sidedSymbol = newSymbol "stats.sided"
--conclusionSymbol = newSymbol "stats.conclusion"
tTestOneSymbol = newSymbol "stats.ttestone"
tTestTwoSymbol = newSymbol "stats.ttesttwo"
tTestPairedSymbol = newSymbol "stats.ttestpaired"
zTestSymbol = newSymbol "stats.ztest"
rPearsonSymbol = newSymbol "stats.rpearson"
anovaSymbol = newSymbol "stats.anova"
chiSquaredSymbol = newSymbol "stats.chisquared"
twoSidedSymbol = newSymbol "stats.twosided"
leftSidedSymbol = newSymbol "stats.leftsided"
rightSidedSymbol = newSymbol "stats.rightsided"
singleSampleSymbol = newSymbol "stats.singlesample"
twoSampleSymbol = newSymbol "stats.twosample"
dependentSymbol = newSymbol "stats.dependent"
independentSymbol = newSymbol "stats.independent"
initialSymbol = newSymbol "stats.initial"
derivedSymbol = newSymbol "stats.derived"
trueSymbol, falseSymbol :: Symbol
trueSymbol = newSymbol L.trueSymbol
falseSymbol = newSymbol L.falseSymbol
toOMSymbol :: Symbol -> OM.Symbol
toOMSymbol s = idToSymbol (getId s)
rejectH0Symbol, acceptH0Symbol, dontRejectH0Symbol, rejectH1Symbol,
acceptH1Symbol, dontRejectH1Symbol :: Symbol
rejectH0Symbol = newSymbol "stats.rejecth0"
acceptH0Symbol = newSymbol "stats.accepth0"
dontRejectH0Symbol = newSymbol "stats.dontrejecth0"
rejectH1Symbol = newSymbol "stats.rejecth1"
acceptH1Symbol = newSymbol "stats.accepth1"
dontRejectH1Symbol = newSymbol "stats.dontrejecth1"
-- Copied from Ideas.Encoding.OpenMathSuppoer
idToSymbol :: Id -> OM.Symbol
idToSymbol a
| null (qualifiers a) =
OM.extraSymbol (unqualified a)
| otherwise =
OM.makeSymbol (qualification a) (unqualified a)
toTermBool :: Bool -> Term
toTermBool b = symbol s
where
s = if b then trueSymbol else falseSymbol
fromTermBool :: Monad m => Term -> m Bool
fromTermBool (TCon s [])
| s == trueSymbol = return True
| s == falseSymbol = return False
fromTermBool _ = fail "Term is not a boolean"