868 research outputs found
ΠΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π΅ΡΠ²Π΅ΠΉ ΠΈ Π³ΡΠ°Π½ΠΈΡ
The Design and Analysis of Computer Algorithms is a must of Computer Curricula. It covers many topics that group around several core themes. These themes range from data structures to the complexity theory, but one very special theme is algorithmic design patterns, including greedy method, divide-and-conquer, dynamic programming, backtracking and branch-and-bound. Naturally, all the listed design patterns are taught, learned and comprehended by examples. But they can be semi-formalized as design templates, semi-specified by correctness conditions, and semi-formally verified by means of Floyd method. Moreover, this approach can lead to new insights and better comprehension of the design patterns, specification and verification methods. In this paper we demonstrate an utility of the approach by study of backtracking and branch-and-bound design patterns. In particular, we prove correctness of the suggested templates when the boundary condition is monotone, but the decision condition is anti-monotone on sets of "visited" vertices.ΠΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΡΠ΅Π±Π½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ΅ Π²ΡΠ΅Ρ
ΡΡΠΎΠ²Π½Π΅ΠΉ. Π ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°Ρ
ΡΡΠΎΡ ΠΊΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΡΠ΅ΠΎΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Ρ.Π΄. ΠΡΠΎΡ ΠΊΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠ°ΠΊ ΠΆΠ°Π΄Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉ, ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΊΠ°ΡΠ°, ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ²Π΅ΠΉ ΠΈ Π³ΡΠ°Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
. ΠΠΎ (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅) ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ (ΠΏΠΎΠ»Ρ)ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Π²ΠΈΠ΄Π΅ "ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ²", ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΈ/ΠΈΠ»ΠΈ ΡΠΎΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ (Π΄ΠΎΠΊΠ°Π·Π°Π½Ρ) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π€Π»ΠΎΠΉΠ΄Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ, Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π ΡΡΠ°ΡΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π΅ΡΠ²Π΅ΠΉ ΠΈ Π³ΡΠ°Π½ΠΈΡ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΡ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Ρ, Π΅ΡΠ»ΠΈ Π³ΡΠ°Π½ΠΈΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ - ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π° ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ - Π°Π½ΡΠΈΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ
Π²Π΅ΡΡΠΈΠ½
A Survey of Symbolic Execution Techniques
Many security and software testing applications require checking whether
certain properties of a program hold for any possible usage scenario. For
instance, a tool for identifying software vulnerabilities may need to rule out
the existence of any backdoor to bypass a program's authentication. One
approach would be to test the program using different, possibly random inputs.
As the backdoor may only be hit for very specific program workloads, automated
exploration of the space of possible inputs is of the essence. Symbolic
execution provides an elegant solution to the problem, by systematically
exploring many possible execution paths at the same time without necessarily
requiring concrete inputs. Rather than taking on fully specified input values,
the technique abstractly represents them as symbols, resorting to constraint
solvers to construct actual instances that would cause property violations.
Symbolic execution has been incubated in dozens of tools developed over the
last four decades, leading to major practical breakthroughs in a number of
prominent software reliability applications. The goal of this survey is to
provide an overview of the main ideas, challenges, and solutions developed in
the area, distilling them for a broad audience.
The present survey has been accepted for publication at ACM Computing
Surveys. If you are considering citing this survey, we would appreciate if you
could use the following BibTeX entry: http://goo.gl/Hf5FvcComment: This is the authors pre-print copy. If you are considering citing
this survey, we would appreciate if you could use the following BibTeX entry:
http://goo.gl/Hf5Fv
Learning to Find Proofs and Theorems by Learning to Refine Search Strategies: The Case of Loop Invariant Synthesis
We propose a new approach to automated theorem proving where an
AlphaZero-style agent is self-training to refine a generic high-level expert
strategy expressed as a nondeterministic program. An analogous teacher agent is
self-training to generate tasks of suitable relevance and difficulty for the
learner. This allows leveraging minimal amounts of domain knowledge to tackle
problems for which training data is unavailable or hard to synthesize. As a
specific illustration, we consider loop invariant synthesis for imperative
programs and use neural networks to refine both the teacher and solver
strategies
Doctor of Philosophy
dissertationAsynchronous circuits exhibit impressive power and performance benefits over its synchronous counterpart. Asynchronous system design, however, is not widely adopted due to the fact that it lacks an equivalent support of CAD tools and requires deep expertise in asynchronous circuit design. A relative timing (RT) based asynchronous asynchronous commercial CAD tools was recently proposed. This design flow enables engineers who are proficient in using synchronous design and CAD flow to more easily switch to asynchronous design without asynchronous experience while retaining the asynchronous benefits of power and performance. Relative timing constraints are the key step to this design flow, and were generated manually by the designer based on his/her intuition and understanding of the circuit logic and structure. This process was quite time-consuming and error-prone. This dissertation presents an algorithm that automatically generates a set of relative timing constraints to guarantee the correctness of a circuit with the aid of a formal verification engine - Analyze. The algorithms have been implemented in a tool called ARTIST (Automatic Relative Timing Identifier based on Signal Traces). Automatic generation of relative timing constraints relies on manipulation, such as searching and backtracking, of a trace status tableau that is built based on the counter example signal trace returned from the formal verification engine. The underlying mechanism of relative timing is to force signal ordering on the labeled transition graph of the system to restrict its reachability to failure states such that the circuit implementation conforms to the specification. Examples from a simple C-Element to complex six-four GasP circuits are demonstrated to show how this technique is applied to real problems. The set of relative timing constraints generated by ARTIST is compared against the set of hand generated constraints in terms of efficiency and quality. Over 100 four-phase handshake controller protocols have been verified through ARTIST and Analyze. ARTSIT vastly reduces the design time as compared to hand generation which may take days or even months to achieve a solution set of RT constraints. The quality of ARTIST generated constraints is also shown to be as good as hand generation
- β¦