Кіріспе
Компьютерлік ғылымда және математикалық логикада қанағаттандырылатындық модулі теориясы (SMT) - математикалық формуланың қанағаттандырылатындығын анықтау мәселесі. Ол Бульдық қанағаттандырылу проблемасын (SAT) нақты сандар, бүтін сандар және / немесе тізімдер, массивтер, бит векторлары және тізбектер сияқты әртүрлі деректер құрылымдарын қамтитын күрделі формулаларға жалпылайды. Атауы осы өрнектер теңдікпен бірінші реттік логикадағы белгілі бір формальды теорияның ("модуль") ішінде түсіндірілетіндіктен алынған (көбінесе сандық белгілерге жол берілмейді). SMT шешушілері - инпуттардың практикалық жиынтығы үшін SMT проблемасын шешуді көздейтін құралдар. Z3 және cvc5 сияқты SMT шешушілері компьютерлік ғылымның көптеген салаларында, соның ішінде автоматтандырылған теоремаларды дәлелдеу, бағдарламаны талдау, бағдарламаны тексеру және бағдарламалық қамтамасыз етуді сынау үшін құрылыс блогы ретінде пайдаланылды. Бульдік қанағаттандырылуы NP толық болғандықтан, SMT мәселесі әдетте NP қиын, ал көптеген теориялар үшін ол шешілмейтін болып табылады. Зерттеушілер қай теориялар немесе теориялардың кіші топтамалары шешілетін SMT проблемасына және шешілетін жағдайлардың есептеу күрделілігіне әкелетінін зерттейді. Нәтижесінде шешім қабылдау процедуралары SMT шешімін табушыларда тікелей жүзеге асырылады; мысалы, Presburger арифметигінің шешілуін қараңыз. SMT шектеулерді қанағаттандыру проблемасы ретінде және осылайша шектеулер бағдарламалаудың белгілі бір ресми тәсілі ретінде қарастырылуы мүмкін.
In computer science and mathematical logic, satisfiability modulo theories (SMT) is the problem of determining whether a mathematical formula is satisfiable. It generalizes the Boolean satisfiability problem (SAT) to more complex formulas involving real numbers, integers, and/or various data structures such as lists, arrays, bit vectors, and strings. The name is derived from the fact that these expressions are interpreted within ("modulo") a certain formal theory in first order logic with equality (often disallowing quantifiers). SMT solvers are tools that aim to solve the SMT problem for a practical subset of inputs. SMT solvers such as Z3 and cvc5 have been used as a building block for a wide range of applications across computer science, including in automated theorem proving, program analysis, program verification, and software testing. Since Boolean satisfiability is already NP complete, the SMT problem is typically NP hard, and for many theories it is undecidable. Researchers study which theories or subsets of theories lead to a decidable SMT problem and the computational complexity of decidable cases. The resulting decision procedures are often implemented directly in SMT solvers; see, for instance, the decidability of Presburger arithmetic. SMT can be thought of as a constraint satisfaction problem and thus a certain formalized approach to constraint programming.
Автоматтандырылған теоремаларды дәлелдеумен байланысы
SMT-ның шешімін табу мен теоремаларды автоматтандырылған түрде дәлелдеу арасында айтарлықтай үйлесім бар. Жалпы, автоматтандырылған теоремаларды дәлелдеушілер толық бірінші реттік логиканы сандық белгілермен қолдауға назар аударады, ал SMT шешушілері әртүрлі теорияларды қолдауға көбірек назар аударады (түсініктемелі предикат белгілері). АТП көптеген сандық белгілері бар мәселелерді шешуге қабілетті, ал SMT-ді шешушілер сандық белгілері жоқ үлкен мәселелерді жақсы шешеді. Сызық жеткілікті бүлінген, кейбір АТП-лар SMT COMP-ке қатысады, ал кейбір SMT шешушілер CASC-ке қатысады.
Экспрессивтік күш
SMT инстанциясы - бұл Бульдік SAT инстанциясының жалпылануы, онда әртүрлі айнымалылар жиынтығы әртүрлі негізгі теориялардың предикаттарымен ауыстырылады. SMT формулалары Бульдік SAT формулаларына қарағанда әлдеқайда бай модельдеу тілін ұсынады. Мысалы, SMT формуласы микропроцессордың деректер жолын биттік деңгейден гөрі сөз деңгейінде модельдеуге мүмкіндік береді. Салыстырмалы түрде, жауаптар жиынтығын бағдарламалау да предикаттарға негізделген (дәлірек айтқанда, атомдық формулалардан құрылған атомдық сөйлемдерге). SMT-ден айырмашылығы, жауаптар жиынтығының бағдарламаларында сандық белгілер жоқ және сызықтық арифметика немесе айырмашылық логика сияқты шектеулерді оңай білдіре алмайды. Жауаптар жиынтығын бағдарламалауда 32 бит бүтін сандарды бит векторлары ретінде іске асыру SMT ертедегі шешуіштерге кезіккен көптеген проблемалардан зардап шегеді: x + y = y + x сияқты "көрнекті" сәйкестіктерді анықтау қиын. Шекті логикалық бағдарламалау сызықтық арифметикалық шектеулерді қолдайды, бірақ мүлдем басқа теориялық негізде. SMT шешушілері жоғары дәрежелі логикадағы формулаларды шешу үшін де кеңейтілген.
Еріткіш жақындап келеді
SMT инстанцияларын шешудің алғашқы әрекеттері оларды Буль SAT инстанцияларына аударуды қамтиды (мысалы, 32 биттік бүтін сан 32 бір биттік айнымалымен кодталады және "плюс" сияқты сөз деңгейіндегі операциялар биттердегі төменгі деңгейдегі логикалық операциялармен ауыстырылады) және бұл формуланы Буль SAT шешушісіне тапсырады. Бұл әдіс ынталы әдіс (немесе битбластинг) деп аталады, оның артықшылықтары бар: SMT формуласын эквивалентті Бульдік SAT формуласына алдын ала өңдеу арқылы қолданыстағы Бульдік SAT шешімдерін "осылай" және олардың өнімділігі мен қуатын жақсарту уақыт өте келе пайдаланып қалуы мүмкін. Екінші жағынан, негізгі теориялардың жоғары деңгейдегі семантикасының жоғалуы Бульдік SAT шешушісіне "ашық" фактілерді (мысалы, бүтін сандарды қосу үшін) табу үшін қажеттіден әлдеқайда көп жұмыс істеу керек дегенді білдіреді. Бұл байқау бірнеше SMT шешушілерін әзірлеуге әкелді, олар DPLL стильіндегі іздеудің Бульдік ойлауын белгілі бір теориядан алынған предикаттардың байланыстарын (AND) басқаратын теорияға тән шешушілермен (T шешушілерімен) тығыз біріктіреді. Бұл әдіс жалқау әдіс деп аталады. DPLL(T) деп аталатын бұл архитектура Бульдік ойлауды DPLL негізделген SAT шешімін табушыға береді, ол өз кезегінде жақсы анықталған интерфейс арқылы T теориясы үшін шешімін табушымен өзара әрекеттеседі. Теорияны шешушіге тек формуланың Бульдік іздеу кеңістігін зерттей отырып, SAT шешушісінен берілген теориялық предикаттардың бірігуін тексеру туралы уайымдауға тура келеді. Алайда, бұл интеграцияның жақсы жұмыс істеуі үшін теорияны шешуші таратуға және конфликтті талдауға қатыса алуы керек, яғни ол бұрыннан қалыптасқан фактілерден жаңа фактілерді шығара алуы керек, сондай-ақ теориялық қақтығыстар туындаған кезде жүзеге аспайтын қысқаша түсіндірмелерді ұсынуы керек. Басқаша айтқанда, теорияны шешуші элемент артқа қарай да, үдемелі түрде де болуы керек.
Шешілетін теориялар
Зерттеушілер қай теориялар немесе теориялардың кіші топтамалары шешілетін SMT проблемасына және шешілетін жағдайлардың есептеу күрделілігіне әкелетінін зерттейді. Бірінші реттік логиканың толық жартылай шешілуі мүмкін болғандықтан, зерттеулердің бір бағыты бірінші реттік логиканың фрагменттері үшін тиімді шешім қабылдау процедураларын табуға тырысады, мысалы тиімді пропозициялық логика. Зерттеудің тағы бір бағыты - арнайы шешілетін теорияларды әзірлеу, соның ішінде рационалды және бүтін сандар бойынша сызықтық арифметика, белгіленген ені бар бит векторлары, жылжымалы нүктелік арифметика (көбінесе SMT шешімін табушыларда биттік жарылыс арқылы іске асырылады, яғни бит векторларға дейін азайту), тізбектер, (қо) деректер түрлері, реттіліктер (динамикалық массивтерді модельдеу үшін қолданылады), шекті жиынтықтар мен қатынастар, бөлу логикасы, шекті өрістер және басқалардың арасында түсіндіруге болмайтын функциялар. Бульдік монотонды теориялар - тиімді теория таралуын және конфликттерді талдауды қолдайтын теориялар класы, олар DPLL ((T) шешушілерде практикалық қолдануға мүмкіндік береді. Монотондық теориялар тек Бульдік айнымалыларды ғана қолдайды (бульдік - жалғыз сұрып), ал олардың барлық функциялары мен предикаттары p аксиомаға бағынады Монотондық теориялардың мысалдары графтың қолжетімділігін, құсқыншақ корпустар үшін соқтығысуды анықтауды, минималды кесулерді және есептеу ағашының логикасын қамтиды. Әрбір Даталог бағдарламасын монотонды теория ретінде түсіндіруге болады.
Examples of monotonic theories include graph reachability, collision detection for convex hulls, minimum cuts, and computation tree logic. Every Datalog program can be interpreted as a monotonic theory.
Шешушілер
Төмендегі кестеде көптеген SMT шешімдерінің кейбір ерекшеліктері қысқаша баяндалған. "SMT LIB" бағаны SMT LIB тілімен үйлесімділікті көрсетеді; "иә" деп белгіленген көптеген жүйелер SMT LIB-ның тек ескі нұсқаларын ғана қолдай алады немесе осы тілді тек ішінара ғана қолдайды. "CVC" бағаны CVC (Cooperating Validity Checker) тілін қолдағанын көрсетеді. "DIMACS" бағаны DIMACS форматын қолдағанын көрсетеді. Жобалар ерекшеліктері мен орындалуы бойынша ғана емес, сонымен қатар қоршаған қоғамдастықтың өмір сүру қабілеті, жобаға деген қызығушылығы және құжаттама, түзетулер, сынақтар мен жақсартулар енгізу қабілеті бойынша да ерекшеленеді. қатынастық модельдер C++, Scheme, Python no subgraph isomorphism OpenSMT Linux, Mac OS, Windows GPLv3 бос теория, айырмашылықтар, сызықтық арифметика, битвекторлар C++ 2011 жалқау SMT SolverraSATLinuxGPLv3v2.0реалдық және бүтін сандық сызықтық емес арифметика2014, 2015 Интервалдік шектеудің таралуын сынаумен және аралық мән теоремасымен кеңейту SatEEn ? Жеке меншікті сызықтық арифметика, айырмашылық логикасы жоқ 2009 SMTInterpol Linux, Mac OS, Windows LGPLv3 интерпретацияланбаған функциялары, сызықтық нақты арифметика және сызықтық бүтін сандар арифметикасы Java 2012 Жоғары сапалы, тығыз интерполанттарды жасауға бағытталған. SMCHR Linux, Mac OS, Windows GPLv3 сызықтық арифметика, сызықтық емес арифметика, үйірлер C no Шектіліктерді басқару ережелерін қолдана отырып, жаңа теорияларды іске асыра алады. SMT RAT Linux, Mac OS MIT сызықтық арифметика, сызықтық емес арифметика C++ 2015 SMT-ға сәйкес келетін іске асырулардың жиынтығынан тұратын стратегиялық және қатарлы SMT-ды шешу үшін құралдар жиынтығы. SONOLAR Linux, Windows Сақтық бітвекторлары C 2010 SAT шешімін табуға негізделген Spear Linux, Mac OS, Windows Сақтық бітвекторлары 2008 STP Linux, OpenBSD, Windows, Mac OS MIT бітвекторлары, массивтер C, C++, Python, OCaml, Java 2011 SAT шешімін табуға негізделген SWORD Linux Сақтық бітвекторлары 2009 UCLID Linux BSD бос теория, сызықтық арифметика, бітвекторлар және шектелген ламбда (массивтер, естеліктер, кэш және т.б.) SAT-қа негізделмеген, Московский ML-де жазылған. Кіріс тілі SMV модель тексерушісі. Жақсы жазылған! veriT Linux, OS X BSD бос теория, рационалды және бүтін сандар сызықтық арифметикасы, сандық белгілер және түсіндірілмеген функция символдарына теңдік C/C++ 2010 SAT шешімін табушы негізделген, дәлелдемелер шығара алады Linux, Mac OS, Windows, FreeBSD GPLv3 рационалды және бүтін сандар сызықтық арифметикасы, бит векторлары, массивтер және түсіндірілмеген функция символдарына теңдік C 2014 Ресурс коды онлайн қол жетімді Z3 Теоремасы Prover Linux, Mac OS, Windows, FreeBSD MIT бос теория, сызықтық арифметика, сызықтық емес арифметика, бит векторлары, массивтер, дерек түрлері, сандық белгілер, тізбелер C/C++, NET, OCaml, Python, Java, Haskell 2011 Ресурс коды онлайн қол жетімді
Стандарттау және SMT-COMP шешушілердің бәсекелестігі
SMT шешушілерге (және теоремаларды автоматтандырылған дәлелдеушілерге, бұл термин жиі синоним ретінде қолданылады) стандартталған интерфейсті сипаттауға бірнеше әрекет жасалған. Ең танымал - SMT LIB стандарты, ол S өрнектеріне негізделген тілді ұсынады. Басқа стандартталған форматтар көп қолданатын DIMACS форматы көптеген Бульдік SAT шешімдерімен және CVC автоматтандырылған теорема провайдері қолданатын CVC форматы. SMT LIB форматы сонымен қатар бірқатар стандартталған эталондық көрсеткіштермен бірге келеді және SMT COMP деп аталатын SMT шешімдерін шығарушылар арасында жыл сайынғы бәсекелестікке мүмкіндік берді. Бастапқыда, байқау Компьютерлік көмекпен тексеру (CAV) конференциясы кезінде өтті, бірақ 2020 жылдан бастап байқау Автоматтандырылған ойлау жөніндегі халықаралық бірлескен конференцияға (IJCAR) қарасты SMT семинардың бір бөлігі ретінде өткізіледі.
Қолданбалар
SMT шешушілері тексеру үшін, бағдарламалардың дұрыстығын дәлелдеу үшін, бағдарламалық жасақтаманы сынақтан өткізу үшін, сондай-ақ синтездеу үшін, мүмкін бағдарламалардың кеңістігін іздеу арқылы бағдарлама фрагменттерін жасау үшін пайдалы. Бағдарламалық жасақтаманы тексеруден тыс, SMT шешушілері типтік тұжырымдауға және теориялық сценарийлерді модельдеуге, соның ішінде ядролық қаруды бақылаудағы актерлердің сенімдерін модельдеуге де пайдаланылды.
Символды орындауға негізделген талдау және сынау
SMT шешімін табушылардың маңызды қолдануы - бағдарламаларды талдау және сынау үшін символды орындау (мысалы, конкольдік тестілеу), әсіресе қауіпсіздіктің осал жерлерін табуға бағытталған. Бұл санаттағы құралдарға Microsoft Research, KLEE, S2E және Triton компаниясының SAGE-і жатады. Символды орындау үшін қолданылатын SMT шешушілерге Z3, STP, Z3str шешкіштер отбасы және Булектер жатады.
Теоремаларды дәлелдеу
SMT шешушілері Coq және Isabelle/HOL сияқты дәлелдеуші көмекшілермен біріктірілген.