module Task.TheatreRate.Assess where
import Data.Monoid
import Domain.Math.Data.Relation
import Recognize.Data.Approach
import Bayes.Evidence
import Recognize.Data.Attribute hiding (Other)
import Recognize.Data.Diagnosis as S
import Recognize.Data.RuleId
import Recognize.Data.Step
import Recognize.Expr.Symbols
import Recognize.SubExpr.Symbols
import Recognize.Model.Assess
import Recognize.Model.Connectives
import Recognize.Model.EvidenceBuilder
import Task.Network.TheatreRate
assess' :: Diagnosis -> Evidence
assess' sd =
stringNode (apprtostring appr) ans2Strat <>
answerCorrect 8 attrs ans2 <>
generateEvidence buildStepsEvidence appr attrs
where attrs = map (snd . getValue) $ steps sd
appr = approach sd
apprtostring Algebraic = Just "Algebraic"
apprtostring Numerical = Just "Numeric"
apprtostring _ = Nothing
buildStepsEvidence :: Approach -> EvBuilder ()
buildStepsEvidence Algebraic = stepsABuilder
buildStepsEvidence Numerical = stepsNBuilder
buildStepsEvidence _ = return ()
stepsABuilder :: EvBuilder ()
stepsABuilder = do
giveNodeAndCollect ans2Strat1Step21 $ withoutFailure (exists1 (Label "R1"))
giveNodeAndCollect ans2Strat1Step22 $ withoutFailure (exists1 (Label "R2"))
giveNodeAndCollect ans2Strat1Step3 $ withoutFailure ((exists1 (Label "setup equation")) <?>> (exists1 (Label "setup inequation")))
giveNodeAndCollect ans2Strat1Step41 $ withoutFailure (exists1 (Label "setup equation"))
giveNodeAndCollect ans2Strat1Step51 $ withoutFailure (exists1 (ARuleR Coverup_OneVar_Plus (wildcard .==. wildcard) (wildcard .==. wildcard)))
giveNodeAndCollect ans2Strat1Step61 $ withoutFailure (exists1 (ARuleR Coverup_Times_Positive (wildcard .==. wildcard) (wildcard .==. wildcard)))
giveNodeAndCollect ans2Strat1Step42 $ withoutFailure (exists1 (Label "setup inequation"))
giveNodeAndCollect ans2Strat1Step52 $ withoutFailure ((exists1 (ARuleR Coverup_OneVar_Plus (wildcard .<. wildcard) (wildcard .>. wildcard))) <?>> (exists1 (ARuleR Coverup_OneVar_Plus (wildcard .>. wildcard) (wildcard .<. wildcard)))
<?>> (exists1 (ARuleR Coverup_OneVar_Plus (wildcard .>. wildcard) (wildcard .>. wildcard))) <?>> (exists1 (ARuleR Coverup_OneVar_Plus (wildcard .<. wildcard) (wildcard .<. wildcard))))
giveNodeAndCollect ans2Strat1Step62 $ withoutFailure ((exists1 (ARuleR Coverup_Times_Positive (wildcard .<. wildcard) (wildcard .>. wildcard))) <?>> (exists1 (ARuleR Coverup_Times_Positive (wildcard .>. wildcard) (wildcard .<. wildcard)))
<?>> (exists1 (ARuleR Coverup_Times_Positive (wildcard .>. wildcard) (wildcard .>. wildcard))) <?>> (exists1 (ARuleR Coverup_Times_Positive (wildcard .<. wildcard) (wildcard .<. wildcard))))
giveNodeAndCollect ans2Strat1Step7 (exists1 (FinalAnswer 8))
stepsNBuilder :: EvBuilder ()
stepsNBuilder = do
giveNodeAndCollect ans2Strat2Step1 $ withoutFailure (exists1 (LabelE "Try" newMagicNat))
giveNodeAndCollect ans2Strat2Step2 $ withoutFailure (exists1 (LabelE "Try" 8))
giveNodeAndCollect ans2Strat2Step3 (exists1 (FinalAnswer 8))