85 research outputs found
Guided Unfoldings for Finding Loops in Standard Term Rewriting
In this paper, we reconsider the unfolding-based technique that we have
introduced previously for detecting loops in standard term rewriting. We
improve it by guiding the unfolding process, using distinguished positions in
the rewrite rules. This results in a depth-first computation of the unfoldings,
whereas the original technique was breadth-first. We have implemented this new
approach in our tool NTI and compared it to the previous one on a bunch of
rewrite systems. The results we get are promising (better times, more
successful proofs).Comment: Pre-proceedings paper presented at the 28th International Symposium
on Logic-Based Program Synthesis and Transformation (LOPSTR 2018), Frankfurt
am Main, Germany, 4-6 September 2018 (arXiv:1808.03326
Loops under Strategies ... Continued
While there are many approaches for automatically proving termination of term
rewrite systems, up to now there exist only few techniques to disprove their
termination automatically. Almost all of these techniques try to find loops,
where the existence of a loop implies non-termination of the rewrite system.
However, most programming languages use specific evaluation strategies, whereas
loop detection techniques usually do not take strategies into account. So even
if a rewrite system has a loop, it may still be terminating under certain
strategies.
Therefore, our goal is to develop decision procedures which can determine
whether a given loop is also a loop under the respective evaluation strategy.
In earlier work, such procedures were presented for the strategies of
innermost, outermost, and context-sensitive evaluation. In the current paper,
we build upon this work and develop such decision procedures for important
strategies like leftmost-innermost, leftmost-outermost,
(max-)parallel-innermost, (max-)parallel-outermost, and forbidden patterns
(which generalize innermost, outermost, and context-sensitive strategies). In
this way, we obtain the first approach to disprove termination under these
strategies automatically.Comment: In Proceedings IWS 2010, arXiv:1012.533
12th International Workshop on Termination (WST 2012) : WST 2012, February 19–23, 2012, Obergurgl, Austria / ed. by Georg Moser
This volume contains the proceedings of the 12th International Workshop on Termination (WST 2012), to be held February 19–23, 2012 in Obergurgl, Austria. The goal of the Workshop on Termination is to be a venue for presentation and discussion of all topics in and around termination. In this way, the workshop tries to bridge the gaps between different communities interested and active in research in and around termination. The 12th International Workshop on Termination in Obergurgl continues the successful workshops held in St. Andrews (1993), La Bresse (1995), Ede (1997), Dagstuhl (1999), Utrecht (2001), Valencia (2003), Aachen (2004), Seattle (2006), Paris (2007), Leipzig (2009), and Edinburgh (2010). The 12th International Workshop on Termination did welcome contributions on all aspects of termination and complexity analysis. Contributions from the imperative, constraint, functional, and logic programming communities, and papers investigating applications of complexity or termination (for example in program transformation or theorem proving) were particularly welcome. We did receive 18 submissions which all were accepted. Each paper was assigned two reviewers. In addition to these 18 contributed talks, WST 2012, hosts three invited talks by Alexander Krauss, Martin Hofmann, and Fausto Spoto
Proving termination through conditional termination
We present a constraint-based method for proving conditional termination of integer programs. Building on this, we construct a framework to prove (unconditional) program termination using a powerful mechanism to combine conditional termination proofs. Our key insight is that a conditional termination proof shows termination for a subset of program execution states which do not need to be considered in the remaining analysis. This facilitates more effective termination as well as non-termination analyses, and allows handling loops with different execution phases naturally. Moreover, our method can deal with sequences of loops compositionally. In an empirical evaluation, we show that our implementation VeryMax outperforms state-of-the-art tools on a range of standard benchmarks.Peer ReviewedPostprint (author's final draft
Revisiting Semantics of Interactions for Trace Validity Analysis
Interaction languages such as MSC are often associated with formal semantics
by means of translations into distinct behavioral formalisms such as automatas
or Petri nets. In contrast to translational approaches we propose an
operational approach. Its principle is to identify which elementary
communication actions can be immediately executed, and then to compute, for
every such action, a new interaction representing the possible continuations to
its execution. We also define an algorithm for checking the validity of
execution traces (i.e. whether or not they belong to an interaction's
semantics). Algorithms for semantic computation and trace validity are analyzed
by means of experiments.Comment: 18 pages of contents and 2 pages for references, 10 figures.
Published in ETAPS-FASE2020 : "23rd International Conference on Fundamental
Approaches to Software Engineering" in the "research papers" categor
Static Behavioral Malware Detection over LLVM IR
Tato práce se zabývá metodami pro behaviorální detekci malware, které využívají techniky formální analýzy a verifikace. Základem je odvozování stromových automatů z grafů závislostí systémových volání, které jsou získány pomocí statické analýzy LLVM IR. V rámci práce je implementován prototyp detektoru, který využívá překladačovou infrastrukturu LLVM. Pro experimentální ověření detektoru je použit překladač jazyka C/C++, který je schopen generovat mutace malware za pomoci obfuskujících transformací. Výsledky předběžných experimentů a případná budoucí rozšíření detektoru jsou diskutovány v závěru práce.In this thesis we study methods for behavioral malware detection, which use techniques of formal verification. In particular we build on the works, which use inference of tree automata from syscall dependency graphs, obtained by static analysis of LLVM IR. We design and implement a prototype detector using the LLVM compiler framework. For experiments with the detector we use an obfuscating compiler capable of generating mutations of malware from C/C++ source code. We discuss preliminary experiments which show the capabilities of the detector and possible future extensions to the detector.
- …