4 research outputs found
Proving equivalence between imperative and MapReduce implementations using program transformations
Distributed programs are often formulated in popular functional frameworks like MapReduce,
Spark and Thrill, but writing efficient algorithms for such frameworks is usually a non-trivial
task. As the costs of running faulty algorithms at scale can be severe, it is highly desirable
to verify their correctness.
We propose to employ existing imperative reference implementations as specifications
for MapReduce implementations. To this end, we present a novel verification approach in
which equivalence between an imperative and a MapReduce implementation is established
by a series of program transformations.
In this paper, we present how the equivalence framework can be used to prove equivalence
between an imperative implementation of the PageRank algorithm and its MapReduce
variant. The eight individual transformation steps are individually presented and explained
ΠΠ°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΏΠΎΠΈΡΠΊ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²
Property Directed Reachability (PDR) is an efficient and scalable approach to solving systems of symbolic constraints also known as Constrained Horn Clauses (CHC). In the case of non-linear CHCs, which may arise, e.g., from relational verification tasks, PDR aims to infer an inductive invariant for each uninterpreted predicate. However, in many practical cases this reasoning is not successful, as invariants should be derived for groups of predicates instead of individual predicates. The article describes a novel algorithm that identifies these groups automatically and complements the existing PDR technique. The key feature of the algorithm is that it does not require a possibly expensive synchronization transformation over the system of CHCs. We have implemented the algorithm on top of a up-to-date CHC solver Spacer. Our experimental evaluation shows that for some CHC systems, on which existing solvers diverge, our tool is able to discover relational invariants.ΠΠΎΡΡΠΈΠΆΠΈΠΌΠΎΡΡΡ, Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, (Property Directed Reachability, PDR) β ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΊΠ°ΠΊ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΡ Π₯ΠΎΡΠ½Π° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ (Constrained Horn Clauses, CHC). Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΈΠ· Π·Π°Π΄Π°Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, PDR Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠ½Π΄ΡΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠ°ΠΊΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ, Ρ.ΠΊ. ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ Π½ΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΡΠ°ΠΊΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ°ΡΡΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ PDR. ΠΠ»ΡΡΠ΅Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΎΠ² Π₯ΠΎΡΠ½Π°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°Π΄ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ°ΡΠ΅Π»Π΅ΠΌ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΎΠ² Π₯ΠΎΡΠ½Π° Spacer. ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΡΡΠ΅ΠΌ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΡ
ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ°ΡΠ΅Π»ΠΈ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ
ΠΠ° ΠΏΡΡΠΈ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄Π΅Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ C-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ Sisal-ΡΠΈΠΊΠ»Π°ΠΌΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ C-lightVer
The C-lightVer system is developed in IIS SB RAS for C-program deductive verification. C-kernel is an intermediate verification language in this system. Cloud parallel programming system (CPPS) is also developed in IIS SB RAS. Cloud Sisal is an input language of CPPS. The main feature of CPPS is implicit parallel execution based on automatic parallelization of Cloud Sisal loops. Cloud-Sisal-kernel is an intermediate verification language in the CPPS system. Our goal is automatic parallelization of such a superset of C that allows implementing automatic verification. Our solution is such a superset of C-kernel as C-Sisal-kernel. The first result presented in this paper is an extension of C-kernel by Cloud-Sisal-kernel loops. We have obtained the C-Sisal-kernel language. The second result is an extension of C-kernel axiomatic semantics by inference rule for Cloud-Sisal-kernel loops. The paper also presents our approach to the problem of deductive verification automation in the case of finite iterations over data structures. This kind of loops is referred to as definite iterations. Our solution is a composition of symbolic method of verification of definite iterations, verification condition metageneration and mixed axiomatic semantics method. Symbolic method of verification of definite iterations allows defining inference rules for these loops without invariants. Symbolic replacement of definite iterations by recursive functions is the base of this method. Obtained verification conditions with applications of recursive functions correspond to logical base of ACL2 prover. We use ACL2 system based on computable recursive functions. Verification condition metageneration allows simplifying implementation of new inference rules in a verification system. The use of mixed axiomatic semantics results to simpler verification conditions in some cases.Π ΠΠ½ΡΡΠΈΡΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ Π‘Π Π ΠΠ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° C-lightVer Π΄Π»Ρ Π΄Π΅Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ C-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. C-kernel ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (CPPS) ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΠ½ΡΡΠΈΡΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ Π‘Π Π ΠΠ. Cloud Sisal ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Ρ
ΠΎΠ΄Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ CPPS. ΠΠ»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ CPPS ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Cloud Sisal. Cloud-Sisal-kernel ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ CPPS. ΠΠ°ΡΠ΅ΠΉ ΡΠ΅Π»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ·ΡΠΊΠ° C, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠ°ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠ° C-kernel, ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ C-Sisal-kernel. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° C-kernel ΡΠΈΠΊΠ»Π°ΠΌΠΈ ΡΠ·ΡΠΊΠ° Cloud-Sisal-kernel. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΡΠ·ΡΠΊ C-Sisal-kernel. ΠΡΠΎΡΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π°ΠΊΡΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° C-kernel ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π»Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΡΠ·ΡΠΊΠ° Cloud-Sisal-kernel. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π°Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π΅Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ½ΠΈΡΠ½ΡΡ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. Π’Π°ΠΊΠΈΠ΅ ΡΠΈΠΊΠ»Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΠ½ΠΈΡΠ½ΡΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠ°ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΈΠ½ΠΈΡΠ½ΡΡ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΠΌΠ΅ΡΠ°Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΈΠ½ΠΈΡΠ½ΡΡ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΠ²ΠΎΠ΄Π° Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
ΡΠΈΠΊΠ»ΠΎΠ² Π±Π΅Π· ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΌΠ΅Π½Π° ΡΠΈΠ½ΠΈΡΠ½ΡΡ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° ACL2. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ACL2, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π²ΡΡΠΈΡΠ»ΠΈΠΌΡΡ
ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
. ΠΠ΅ΡΠ°Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΏΡΠ°Π²ΠΈΠ» Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ