3/25/2023 0 Comments Loopster downloadIn order to prove termination, TRex maintains an over-approximation of the set of states that can be reached at the head of the loop. The key characteristic of TRex is that it alternates between refining an over-approximation and an under-approximation of each loop in a sequential program. We present a new algorithm, TRex, that determines if a sequential program terminates on all inputs. Proving termination of sequential programs is an important problem, both for establishing the total correctness of systemsĪnd as a component of proving more general termination and liveness properties. By leveraging standard sequential analysis tools, our prototype tool MUTANT is able to discover fair non-terminating executions in typical mutual exclusion protocols and concurrent data-structure algorithms. We implement our analysis by a systematic code-to-code translation from multithreaded programs to sequen-tial programs. Limiting the number of context-switches in each period leads to a compositional analysis in which we consider each thread separately, in isolation, and reduces the search for fair ultimately-periodic executions in multithreaded programs to state-reachability in sequential programs. By limiting the number of context-switches each thread is allowed along any repeating action sequence, our algorithm quickly discovers practically-arising non-terminating executions. Our analysis explores fair and ultimately-periodic executions-i.e., those in which the infinitely-often enabled threads repeatedly execute the same sequences of actions over and over. We develop compositional analysis algorithms for detecting non-termination in multithreaded programs. The evaluation results have demonstrated that Proteus can compute a more precise bound than the existing loop bound analysis techniques Proteus can significantly outperform the state-of-the-art tools for loop program verification and Proteus can help generate test cases for deep loops within one second. We have evaluated Proteus using loops from five open-source projects and two well-known benchmarks and applying the disjunctive loop summary to three applications: loop bound analysis, program verification and test case generation. A DFS-based algorithm is proposed to traverse the PDA to summarize the effect for all possible executions in the loop. Then, we propose a loop analysis framework, which summarizes path-sensitive loop effects on the variables of interest. Based on the PDA, we first propose a loop classification to understand the complexity of loop summarization. In this paper, we propose the path dependency automaton (PDA) to capture the dependencies among the multiple paths in a loop. However, loops are very challenging structures for program analysis, especially when (nested) loops contain multiple paths that have complex interleaving relationships. The results show that Loopster is effective in a majority of loops with better accuracy and 20 ×+ performance improvement compared to the state-of-the-art tools.Īnalyzing loops is very important for various software engineering tasks such as bug detection, test case generation and program optimization. We evaluate Loopster by applying it on the loop termination competition benchmark and three real-world projects. Loopster adopts a divide-and-conquer approach: (1) we extract individual paths from a target multi-path loop and analyze the termination of each path, (2) analyze the dependencies between each two paths, and then (3) determine the overall termination of the target loop based on the relations among paths. In this paper, we present a novel approach, named Loopster, which performs an efficient static analysis to decide the termination for loops based on path termination analysis and path dependency reasoning. Existing loop termination analysis techniques mainly depend on the synthesis of ranking functions, which is often expensive. Loop termination is an important problem for proving the correctness of a system and ensuring that the system always reacts.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |