title: ÐÐ²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° ÐºÐ¾ÑÑÐµÐºÑÐ½Ð¾ÑÑÐ¸ Kotlin-Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼ Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ Ð¼ÐµÑÐ¾Ð´Ð° Ð¿ÑÐ¾Ð²ÐµÑÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ»Ð¸
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð¼Ð°Ð³Ð¸ÑÑÑÐ°
titleType: Subtitle
title: Automation of correctness analysis of Kotlin programs using model checking
Creators: name: ÐÐ¶ÐµÑÑ, ÐÐ½Ð´ÑÐµÐ¹
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2024
Subjects: Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ðµ Ð¾Ð±ÐµÑÐ¿ÐµÑÐµÐ½Ð¸Ðµ
Ð¿ÑÐ¾Ð²ÐµÑÐºÐ° Ð¼Ð¾Ð´ÐµÐ»Ð¸
Ð²ÐµÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ñ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ½Ð¾Ð¹ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ñ
Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ñ Ð²ÐµÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¸
Ð³ÑÐ°Ñ Ð¿Ð¾ÑÐ¾ÐºÐ° ÑÐ¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ
Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ñ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ¾Ð² Ð²ÐµÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¸
software
model checking
verification of automata-based program
verification automation
control flow graph
integration of verification tools

description: ÐÐ°Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð¿Ð¾ÑÐ²ÑÑÐµÐ½Ð° ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ°, Ð³ÐµÐ½ÐµÑÐ¸ÑÑÑÑÐµÐ³Ð¾ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ Kotlin-Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ñ Ð½Ð° ÑÐ·ÑÐºÐµ nuXmv Ð´Ð»Ñ ÐµÑ Ð¿Ð¾ÑÐ»ÐµÐ´ÑÑÑÐµÐ¹ Ð²ÐµÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¸ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ° Ð¿ÑÐ¾Ð²ÐµÑÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ»Ð¸. Ð¢Ð°ÐºÐ¶Ðµ Ð´Ð»Ñ ÑÐ´Ð¾Ð±ÑÑÐ²Ð° Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ° Ð½Ð° Ð¿ÑÐ°ÐºÑÐ¸ÐºÐµ, Ð¾Ð½ Ð±ÑÐ» Ð¸Ð½ÑÐµÐ³ÑÐ¸ÑÐ¾Ð²Ð°Ð½ Ð² ÑÑÐµÐ´Ñ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸ IntelliJ IDEA Ð² Ð²Ð¸Ð´Ðµ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð°. Ð ÑÐ¾Ð´Ðµ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÐ°Ð±Ð¾ÑÑ Ð±ÑÐ»Ð¸ ÑÐ°ÑÑÐ¼Ð¾ÑÑÐµÐ½Ñ ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ðµ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÑ Ð¿ÑÐ¾Ð²ÐµÑÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ»Ð¸, Ð¿ÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½ Ð¿Ð¾Ð´ÑÐ¾Ð´ Ðº Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° ÐºÐ¾ÑÑÐµÐºÑÐ½Ð¾ÑÑÐ¸ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼, Ð° ÑÐ°ÐºÐ¶Ðµ ÑÐ¾Ð·Ð´Ð°Ð½ Ð¸ Ð¿ÑÐ¾ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½ Ð¿Ð»Ð°Ð³Ð¸Ð½, Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÐ¸Ð¹ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð¸ÑÐ¾Ð²Ð°ÑÑ Ð²ÐµÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ Kotlin-Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ñ Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ Ð¼ÐµÑÐ¾Ð´Ð° Ð¿ÑÐ¾Ð²ÐµÑÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ»Ð¸. Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½Ð½ÑÐ¹ Ð¿Ð¾Ð´ÑÐ¾Ð´ Ðº Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° ÐºÐ¾ÑÑÐµÐºÑÐ½Ð¾ÑÑÐ¸ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼ Ð¿Ð¾Ð´ÑÐ°Ð·ÑÐ¼ÐµÐ²Ð°ÐµÑ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ ÑÐ¿ÐµÑÐ¸Ð°Ð»ÑÐ½ÑÑ Ð°Ð½Ð½Ð¾ÑÐ°ÑÐ¸Ð¹, Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÐ¸Ñ Ð² ÑÐ¾Ð¼ ÑÐ¸ÑÐ»Ðµ Ð¿Ð¾Ð¼ÐµÑÐ°ÑÑ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ½ÑÐµ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½ÑÐµ, Ð° ÑÐ°ÐºÐ¶Ðµ Ð¿ÑÐ¾Ð¼ÐµÐ¶ÑÑÐ¾ÑÐ½Ð¾Ð³Ð¾ Ð¿ÑÐµÐ´ÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Jimple (Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÐ° SootUp) Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð¸ÑÑÐ»ÐµÐ´ÑÐµÐ¼Ð¾Ð³Ð¾ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð°. Ð ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐµ Ð±ÑÐ» ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½Ñ, ÑÐ¿ÑÐ¾ÑÐ°ÑÑÐ¸Ð¹ Ð¿ÑÐ¾ÑÐµÑÑ Ð¿Ð¾Ð¸ÑÐºÐ° Ð¾ÑÐ¸Ð±Ð¾Ðº Ð² Ð»Ð¾Ð³Ð¸ÐºÐµ ÑÐ°Ð±Ð¾ÑÑ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð° Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ñ, Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ ÐºÐ¾ÑÐ¾ÑÐ¾Ð³Ð¾ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð²ÑÑÐ¸ÑÑ ÐºÐ°ÑÐµÑÑÐ²Ð¾ ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼ÑÑ Ð¿ÑÐ¾Ð´ÑÐºÑÐ¾Ð².
description: The given work is devoted to the creation of a tool that generates a model of a given Kotlin program in the nuXmv language for its subsequent verification using the model checking tool. Also, for the convenience of using the new tool in practice, it has been integrated into the IntelliJ IDEA development environment as a plug-in. In the course of the work, existing model verification tools were reviewed, an approach to automating program correctness analysis was proposed, and a plugin was created and tested that allows automating verification of a given Kotlin program using model checking. The developed approach to automating the analysis of the correctness of programs involves the use of special annotations, which allow, among other things, marking automatic variables, as well as an intermediate representation of Jimple (the SootUp library) for analyzing the algorithm under study. As a result, a tool has been developed that simplifies the process of finding errors in the logic of the program algorithm, the use of which allows you to improve the quality of the products being created.