-----------------------------------------------------------------------------
-- Copyright 2014, Open Universiteit Nederland. This file is distributed
-- under the terms of the GNU General Public License. For more information,
-- see the file "LICENSE.txt", which is included in the distribution.
-----------------------------------------------------------------------------
-- |
-- Maintainer : bastiaan.heeren@ou.nl
-- Stability : provisional
-- Portability : portable (depends on ghc)
--
-- Main module for feedback services
--
-----------------------------------------------------------------------------
-- $Id: Main.hs 6548 2014-05-16 10:34:18Z bastiaan $
module Main (main) where
import Control.Arrow
import Ideas.Common.Exercise
import Ideas.Common.Id
import Ideas.Common.Utils.TestSuite
import Ideas.Main.Default
import qualified Domain.LinearAlgebra as LA
import qualified Domain.LinearAlgebra.Checks as LA
import qualified Domain.Logic as Logic
import qualified Domain.Logic.Consequence as Logic
import qualified Domain.Logic.Proofs as Logic
import qualified Domain.Math.ExerciseList as Math
import qualified Domain.RelationAlgebra as RA
main :: IO ()
main = defaultMain ideasMath
ideasMath :: DomainReasoner
ideasMath = describe "Domain reasoner for mathematics and logic" $
(newDomainReasoner "ideas.math")
{ exercises = myExercises
, services = myServices
, views = Math.viewList
, aliases = myAliases
, scripts = myScripts
, testSuite = myTestSuite
}
myExercises :: [Some Exercise]
myExercises =
[ -- logic and relation-algebra
Some Logic.dnfExercise
, Some Logic.dnfUnicodeExercise
, Some Logic.cnfUnicodeExercise
, Some Logic.proofExercise
, Some Logic.proofUnicodeExercise
, Some Logic.consequenceExercise
, Some RA.cnfExercise
-- linear algebra
, Some LA.gramSchmidtExercise
, Some LA.linearSystemExercise
, Some LA.gaussianElimExercise
, Some LA.systemWithMatrixExercise
-- regular expressions
-- , some RE.regexpExercise
] ++ Math.exerciseList
myServices :: [Service]
myServices = metaServiceList ideasMath ++ serviceList
myAliases :: [(Id, Id)]
myAliases = map (newId *** newId)
[ ("math.coverup", "algebra.equations.coverup")
, ("math.lineq", "algebra.equations.linear")
, ("math.lineq-mixed", "algebra.equations.linear.mixed")
, ("math.quadreq", "algebra.equations.quadratic")
, ("math.quadreq-no-abc", "algebra.equations.quadratic.no-abc")
, ("math.quadreq-with-approx", "algebra.equations.quadratic.approximate")
, ("math.higherdegree", "algebra.equations.polynomial")
, ("math.rationaleq", "algebra.equations.rational")
, ("math.linineq", "algebra.inequalities.linear")
, ("math.quadrineq", "algebra.inequalities.quadratic")
, ("math.ineqhigherdegree", "algebra.inequalities.polynomial")
, ("math.factor", "algebra.manipulation.polynomial.factor")
, ("math.simplifyrational", "algebra.manipulation.rational.simplify")
, ("math.simplifypower", "algebra.manipulation.exponents.simplify")
, ("math.nonnegexp", "algebra.manipulation.exponents.nonnegative")
, ("math.powerof", "algebra.manipulation.exponents.powerof")
, ("math.derivative", "calculus.differentiation")
, ("math.fraction", "arithmetic.fractions")
, ("math.calcpower", "arithmetic.exponents")
, ("linalg.gaussianelim", "linearalgebra.gaussianelim")
, ("linalg.gramschmidt", "linearalgebra.gramschmidt")
, ("linalg.linsystem", "linearalgebra.linsystem")
, ("linalg.systemwithmatrix", "linearalgebra.systemwithmatrix")
, ("logic.dnf", "logic.propositional.dnf")
, ("logic.dnf-unicode", "logic.propositional.dnf.unicode")
, ("logic.proof", "logic.propositional.proof")
, ("relationalg.cnf", "relationalgebra.cnf")
-- MathDox compatibility
, ("gaussianelimination" , "linearalgebra.gaussianelim")
, ("gramschmidt" , "linearalgebra.gramschmidt")
, ("solvelinearsystem" , "linearalgebra.linsystem")
, ("solvelinearsystemwithmatrix", "linearalgebra.systemwithmatrix")
]
myScripts :: [(Id, FilePath)]
myScripts =
[ (getId Logic.dnfExercise, "logic.txt")
, (getId Logic.dnfUnicodeExercise, "logic.txt")
] ++ Math.scriptList
myTestSuite :: TestSuite
myTestSuite =
mconcat Math.testSuiteList <> LA.checks