In tietotekniikan ja matemaattista logiikkaa , joka on modulo satisfiability teorioita ( SMT ) ongelma on päätös ongelma on ensimmäisen kertaluvun logiikan kaavat tasa-(ilman quantifiers ), yhdistettynä teorioita jossa tiettyjä predikaatti symbolit ilmaistaan ja / tai tiettyjä toimintoja. Esimerkkejä teorioista ovat reaalilukuteoria , lineaarinen aritmeettinen teoria, erilaisten tietorakenteiden, kuten luetteloiden , matriisien tai bittiryhmien , teoriat sekä näiden yhdistelmät.
Muodollisesti SMT-esiintymä on ensimmäisen kertaluvun kaava ilman kvantisoijaa. Esimerkiksi :
SMT-ongelmana on selvittää, onko tällainen kaava tyydyttävä taustalla olevan teorian suhteen. Voisi esimerkiksi miettiä, onko yllä oleva kaava tyydyttävä reaalilukujen teorian suhteen. Toisin sanoen on kysymys siitä, löydetäänkö muuttujille x ja y todelliset luvut, jotka tekevät yllä olevasta kaavasta totta.
Voimme ajatella SMT-ongelman esiintymää ehdotuslogiikan tyydyttävyysongelmana , jossa Boolen muuttujat korvataan atomikaavoilla. Esimerkiksi yllä oleva kaava on ehdotuskaava , jossa Boolen muuttujat p, q, r, s on korvattu atomikaavoilla.
SMT-ratkaisija toimii kahden pääydin ympärillä: SAT-ratkaisijan ja yhden tai useamman teoriapäätösmenettelyn. Ajatuksena on testata, onko vastaava ehdotuskaava (saatu korvaamalla predikaatit Boolen muuttujilla) tyydyttävä SAT-ratkaisijan kautta. Mutta SMT-esiintymä, vaikka se onkin tyydyttävä, kun sitä pidetään SAT-esiintymänä, ei välttämättä ole tyydyttävä tietyn teorian mukaan. Esimerkiksi ei ole tyydyttävä reaalilukujen teorian suhteen, mutta vastaava SAT-esiintymä p on tyydyttävä. Siksi tarkistamme yhdenmukaisuuden teorian päätöksentekomenettelyjen kanssa. Jos johdonmukaisuus on olemassa, meillä on todella tyydyttävä kaava. Muussa tapauksessa rikastamme alkuperäistä kaavaa tiedoilla, jotka edustavat epäjohdonmukaisuutta. Tarkemmin sanottuna SMT-ratkaisijan yleinen toiminta on kuvattu seuraavasti tietylle SMT- F- ilmentymälle .
SMT-ratkaisijoiden arkkitehtuuri on sen vuoksi jaettu seuraavasti: DPLL-algoritmiin perustuva SAT-ratkaisija ratkaisee ongelman Boolen osan ja on vuorovaikutuksessa teorianratkaisijan kanssa levittääkseen ratkaisujaan. Jälkimmäinen tarkistaa teorian predikaattien konjunktioiden tyydyttävyyden. Tehokkuussyistä haluamme yleensä teorian ratkaisijan osallistuvan konfliktien etenemiseen ja analysointiin.
Tässä on joitain esimerkkejä SMT-ratkaisijoista: