5 research outputs found

    An efficient contradiction separation based automated deduction algorithm for enhancing reasoning capability

    Get PDF
    Automated theorem prover (ATP) for first-order logic (FOL), as a significant inference engine, is one of the hot research areas in the field of knowledge representation and automated reasoning. E prover, as one of the leading ATPs, has made a significant contribution to the development of theorem provers for FOL, particularly equality handling, after more than two decades of development. However, there are still a large number of problems in the TPTP problem library, the benchmark problem library for ATPs, that E has yet to solve. The standard contradiction separation (S-CS) rule is an inference method introduced recently that can handle multiple clauses in a synergized way and has a few distinctive features which complements to the calculus of E. Binary clauses, on the other hand, are widely utilized in the automated deduction process for FOL because they have a minimal number of literals (typically only two literals), few symbols, and high manipulability. As a result, it is feasible to improve a prover's deduction capability by reusing binary clause. In this paper, a binary clause reusing algorithm based on the S-CS rule is firstly proposed, which is then incorporated into E with the objective to enhance E’s performance, resulting in an extended E prover. According to experimental findings, the performance of the extended E prover not only outperforms E itself in a variety of aspects, but also solves 18 problems with rating of 1 in the TPTP library, meaning that none of the existing ATPs are able to resolve them

    ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ систСмы C-lightVer ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок Π² C-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…

    Get PDF
    The C-lightVer system for the deductive verification of C programs is being developed at the IIS SB RAS. Based on the two-level architecture of the system, the C-light input language is translated into the intermediate C-kernel language. The meta generator of the correctness conditions receives the C-kernel program and Hoare logic for the C-kernel as input. To solve the well-known problem of determining loop invariants, the definite iteration approach was chosen. The body of the definite iteration loop is executed once for each element of the finite dimensional data structure, and the inference rule for them uses the substitution operation rep, which represents the action of the cycle in symbolic form. Also, in our meta generator, the method of semantic markup of correctness conditions has been implemented and expanded. It allows to generate explanations for unproven conditions and simplifies the errors localization. Finally, if the theorem prover fails to determine the truth of the condition, we can focus on proving its falsity. Thus a method of proving the falsity of the correctness conditions in the ACL2 system was developed. The need for more detailed explanations of the correctness conditions containing the replacement operation rep has led to a change of the algorithms for generating the replacement operation, and the generation of explanations for unproven correctness conditions. Modifications of these algorithms are presented in the article. They allow marking rep definition with semantic labels, extracting semantic labels from rep definition and generating description of break execution condition.Π’ ИБИ БО РАН разрабатываСтся систСма C-lightVer для Π΄Π΅Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π‘-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Π΄Π²ΡƒΡ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ систСмы, Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ язык C-light транслируСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык C-kernel. ΠœΠ΅Ρ‚Π°Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ условий коррСктности ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ C-kernel ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ Π₯ΠΎΠ°Ρ€Π° для C-kernel. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ извСстной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ задания ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ„ΠΈΠ½ΠΈΡ‚Π½Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ„ΠΈΠ½ΠΈΡ‚Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ исполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ размСрности, Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° для Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π·Π°ΠΌΠ΅Π½Ρ‹ rep, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ дСйствиС Ρ†ΠΈΠΊΠ»Π° Π² символичСской Ρ„ΠΎΡ€ΠΌΠ΅. Π’Π°ΠΊΠΆΠ΅ Π² нашСм ΠΌΠ΅Ρ‚Π°Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ сСмантичСской Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ условий коррСктности. Он позволяСт ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ пояснСния для Π½Π΅Π΄ΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… условий ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ошибок. НаконСц, Ссли систСма ACL2 Π½Π΅ справляСтся с установлСниСм истинности условия, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ Π΅Π³ΠΎ лоТности. Π Π°Π½Π΅Π΅ Π½Π°ΠΌΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ способ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° лоТности условий коррСктности для систСмы ACL2. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠ±ΡŠΡΡΠ½Π΅Π½ΠΈΡΡ… условий коррСктности, содСрТащих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π·Π°ΠΌΠ΅Π½Ρ‹ rep, ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ измСнСнию Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹, извлСчСния сСмантичСских ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ объяснСний Π½Π΅Π΄ΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… условий коррСктности. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ прСдставлСны ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π­Ρ‚ΠΈ измСнСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ rep сСмантичСскими ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ сСмантичСскиС ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ· опрСдСлСния rep, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описаниС условия исполнСния инструкции break

    Detection and Exploitation of Information Flow Leaks

    Get PDF
    This thesis contributes to the field of language-based information flow analysis with a focus on detection and exploitation of information flow leaks in programs. To achieve this goal, this thesis presents a number of precise semi-automatic approaches that allow one to detect, exploit and judge the severity of information flow leaks in programs. The first part of the thesis develops an approach to detect and demonstrate information flow leaks in a program. This approach analyses a given program statically using symbolic execution and self-composition with the aim to generate so-called insecurity formulas whose satisfying models (obtained by SMT solvers) give rise to pairs of initial states that demonstrate insecure information flows. Based on these models, small unit test cases, so-called leak demonstrators, are created that check for the detected information flow leaks and fail if these exist. The developed approach is able to deal with unbounded loops and recursive method invocation by using program specifications like loop invariants or method contracts. This allows the approach to be fully precise (if needed) but also to abstract and allow for false positives in exchange for a higher degree of automation and simpler specifications. The approach supports several information flow security policies, namely, noninterference, delimited information release, and information erasure. The second part of the thesis builds upon the previous approach that allows the user to judge the severity of an information flow leak by exploiting the detected leaks in order to infer the secret information. This is achieved by utilizing a hybrid analysis which conducts an adaptive attack by performing a series of experiments. An experiment constitutes a concrete program run which serves to accumulate the knowledge about the secret. Each experiment is carried out with optimal low inputs deduced from the prior distribution and the knowledge of secret so that the potential leakage is maximized. We propose a novel approach to quantify information leakages as explicit functions of low inputs using symbolic execution and parametric model counting. Depending on the chosen security metric, general nonlinear optimization tools or Max-SMT solvers are used to find optimal low inputs, i.e., inputs that cause the program to leak a maximum of information. For the purpose of evaluation, both approaches have been fully implemented in the tool KEG, which is based on the state-of-the-art program verification system KeY. KEG supports a rich subset of sequential Java programs and generates executable JUnit tests as leak demonstrators. For the secret inference, KEG produces executable Java programs and runs them to perform the adaptive attack. The thesis discusses the planning, execution, and results of the evaluation. The evaluation has been performed on a collection of micro-benchmarks as well as two case studies, which are taken from the literature. The evaluation using the micro-benchmarks shows that KEG detects successfully all information flow leaks and is able to generate correct demonstrators in case the supplied specifications are correct and strong enough. With respect to secret inference, it shows that the approach presented in this thesis (which computes optimal low inputs) helps an attacker to learn the secret much more efficiently compared to approaches using arbitrary low inputs. KEG has also been evaluated in two case studies. The first case study is performed on an e-voting software which has been extracted in a simplified form from a real-world e-voting system. This case study focuses on the leak detection and demonstrator generation approach. The e-voting case study shows that KEG is able to deal with relatively complicated programs that include unbounded loops, objects, and arrays. Moreover, the case study demonstrates that KEG can be integrated with a specification generation tool to obtain both precision and full automation. The second case study is conducted on a PIN integrity checking program, adapted from a real-world ATM PIN verifying system. This case study mainly demonstrates the secret inference feature of KEG. It shows that KEG can help an attacker to learn the secret more efficiently given a good enough assumption about the prior distribution of secret

    Symbolic Computation and Automated Reasoning for Program Analysis

    No full text
    This talk describes how a combination of symbolic computation techniques with first-order theorem proving can be used for solving some challenges of automating program analysis, in particular for generating and proving properties about the logically complex parts of software. The talk will first present how computer algebra methods, such as Grobner basis computation, quantifier elimination and algebraic recurrence solving, help us in inferring properties of program loops with non-trivial arithmetic. Typical properties inferred by our work are loop invariants and expressions bounding the number of loop iterations. The talk will then describe our work to generate first-order properties of programs with unbounded data structures, such as arrays. For doing so, we use saturation-based first-order theorem proving and extend first-order provers with support for program analysis. Since program analysis requires reasoning in the combination of first-order theories of data structures, the talk also discusses new features in first-order theorem proving, such as inductive reasoning and built-in boolean sort. These extensions allow us to express program properties directly in first-order logic and hence use further first-order theorem provers to reason about program properties
    corecore