/************************************************/ /* PRISM EXECUTION */ /************************************************/ internal override Probability CalculateProbability(Formula formulaToCheck) { ProbabilityChecker.AssertProbabilityMatrixWasCreated(); WriteMarkovChainToDisk(); var isFormulaReturningProbabilityVisitor = new IsFormulaReturningProbabilityVisitor(); isFormulaReturningProbabilityVisitor.Visit(formulaToCheck); if (!isFormulaReturningProbabilityVisitor.IsReturningProbability) { throw new Exception("expected formula which returns a probability"); } var transformationVisitor = new PrismTransformer(); transformationVisitor.Visit(formulaToCheck); var formulaToCheckString = transformationVisitor.TransformedFormula; using (var fileProperties = new TemporaryFile("props")) { File.WriteAllText(fileProperties.FilePath, formulaToCheckString); var prismArguments = _filePrism.FilePath + " " + fileProperties.FilePath; var prism = ExecutePrism(prismArguments); _prismProcessOutput.Clear(); prism.Run(); var result = ParseOutput(_prismProcessOutput); var quantitativeResult = (PrismResultQuantitative)result.Result; return(new Probability(quantitativeResult.Result)); } }
public Prism(ProbabilityChecker probabilityChecker) : base(probabilityChecker) { }