Ejemplo n.º 1
0
        private void VerifyWithBoogie(Boogie.Program program, CancellationToken cancellationToken)
        {
            program.Resolve();
            program.Typecheck();

            ExecutionEngine.EliminateDeadVariables(program);
            ExecutionEngine.CollectModSets(program);
            ExecutionEngine.CoalesceBlocks(program);
            ExecutionEngine.Inline(program);
            // TODO Is the programId of any relevance? The requestId is used to cancel a verification.
            //      However, the cancelling a verification is currently not possible since it blocks a text document
            //      synchronization event which are serialized. Thus, no event is processed until the pending
            //      synchronization is completed.
            var uniqueId = Guid.NewGuid().ToString();

            using (cancellationToken.Register(() => CancelVerification(uniqueId))) {
                // TODO any use of the verification state?
                ExecutionEngine.InferAndVerify(program, new PipelineStatistics(), uniqueId, error => { }, uniqueId);
            }
        }