----------------------------------------------------------------------------- -- Copyright 2013, 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 -- ----------------------------------------------------------------------------- module Main (main) where import Control.Arrow import Ideas.Common.Exercise import Ideas.Common.Id import Ideas.Common.Utils (Some(..)) import Ideas.Common.Utils.TestSuite import Ideas.Main.Default import Ideas.Service.DomainReasoner import Ideas.Service.ServiceList import Ideas.Service.Types (Service) import qualified Domain.LinearAlgebra as LA import qualified Domain.LinearAlgebra.Checks as LA import qualified Domain.Logic 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.proofExercise , Some Logic.proofUnicodeExercise , 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") , ("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 = do sequence_ Math.testSuiteList LA.checks