Beispiel #1
0
        private void PerformHoudini()
        {
            var houdiniStats = new HoudiniSession.HoudiniStatistics();

            GC.Collect();

            try
            {
                this.Houdini = new Houdini(this.AC.BoogieProgram, houdiniStats);
                this.Outcome = this.Houdini.PerformHoudiniInference();
            }
            catch (OutOfMemoryException)
            {
                Lockpwn.IO.Reporter.WarningWriteLine("Warning: Houdini run out of memory");
                GC.Collect();
                throw new AnalysisFailedException();
            }
            catch (Exception ex)
            {
                Lockpwn.IO.Reporter.WarningWriteLine("Warning: Houdini failed: " + ex.Message);
                GC.Collect();
                throw new AnalysisFailedException();
            }

            if (CommandLineOptions.Clo.PrintAssignment)
            {
                Output.PrintLine("..... Assignment computed by Houdini:");
                foreach (var x in this.Outcome.assignment)
                {
                    Output.PrintLine(x.Key + " = " + x.Value);
                }
            }

            if (ToolCommandLineOptions.Get().SuperVerboseMode)
            {
                int numTrueAssigns = 0;
                foreach (var x in this.Outcome.assignment)
                {
                    if (x.Value)
                    {
                        numTrueAssigns++;
                    }
                }

                Output.PrintLine("..... Number of true assignments = " + numTrueAssigns);
                Output.PrintLine("..... Number of false assignments = " + (this.Outcome.assignment.Count - numTrueAssigns));
                Output.PrintLine("..... Prover time = " + houdiniStats.proverTime.ToString("F2"));
                Output.PrintLine("..... Unsat core prover time = " + houdiniStats.unsatCoreProverTime.ToString("F2"));
                Output.PrintLine("..... Number of prover queries = " + houdiniStats.numProverQueries);
                Output.PrintLine("..... Number of unsat core prover queries = " + houdiniStats.numUnsatCoreProverQueries);
                Output.PrintLine("..... Number of unsat core prunings = " + houdiniStats.numUnsatCorePrunings);
            }
        }
Beispiel #2
0
        private void PerformHoudini(ref HoudiniOutcome outcome)
        {
            var houdiniStats = new HoudiniSession.HoudiniStatistics();

            this.Houdini = new Houdini(this.AC.Program, houdiniStats);
            outcome      = this.Houdini.PerformHoudiniInference();

            if (CommandLineOptions.Clo.PrintAssignment)
            {
                Console.WriteLine("Assignment computed by Houdini:");
                foreach (var x in outcome.assignment)
                {
                    Console.WriteLine(x.Key + " = " + x.Value);
                }
            }

            if (CommandLineOptions.Clo.Trace)
            {
                int numTrueAssigns = 0;
                foreach (var x in outcome.assignment)
                {
                    if (x.Value)
                    {
                        numTrueAssigns++;
                    }
                }

                Console.WriteLine("Number of true assignments = " + numTrueAssigns);
                Console.WriteLine("Number of false assignments = " + (outcome.assignment.Count - numTrueAssigns));
                Console.WriteLine("Prover time = " + houdiniStats.proverTime.ToString("F2"));
                Console.WriteLine("Unsat core prover time = " + houdiniStats.unsatCoreProverTime.ToString("F2"));
                Console.WriteLine("Number of prover queries = " + houdiniStats.numProverQueries);
                Console.WriteLine("Number of unsat core prover queries = " + houdiniStats.numUnsatCoreProverQueries);
                Console.WriteLine("Number of unsat core prunings = " + houdiniStats.numUnsatCorePrunings);
            }
        }
Beispiel #3
0
        private void PerformHoudini()
        {
            var houdiniStats = new HoudiniSession.HoudiniStatistics();

            this.Houdini = new Houdini(this.AC.BoogieProgram, houdiniStats);
            this.Outcome = this.Houdini.PerformHoudiniInference();

            if (CommandLineOptions.Clo.PrintAssignment)
            {
                Output.PrintLine("..... Assignment computed by Houdini:");
                foreach (var x in this.Outcome.assignment)
                {
                    Output.PrintLine(x.Key + " = " + x.Value);
                }
            }

            if (ToolCommandLineOptions.Get().SuperVerboseMode)
            {
                int numTrueAssigns = 0;
                foreach (var x in this.Outcome.assignment)
                {
                    if (x.Value)
                    {
                        numTrueAssigns++;
                    }
                }

                Output.PrintLine("..... Number of true assignments = " + numTrueAssigns);
                Output.PrintLine("..... Number of false assignments = " + (this.Outcome.assignment.Count - numTrueAssigns));
                Output.PrintLine("..... Prover time = " + houdiniStats.proverTime.ToString("F2"));
                Output.PrintLine("..... Unsat core prover time = " + houdiniStats.unsatCoreProverTime.ToString("F2"));
                Output.PrintLine("..... Number of prover queries = " + houdiniStats.numProverQueries);
                Output.PrintLine("..... Number of unsat core prover queries = " + houdiniStats.numUnsatCoreProverQueries);
                Output.PrintLine("..... Number of unsat core prunings = " + houdiniStats.numUnsatCorePrunings);
            }
        }