{"id":1475,"date":"2026-01-16T11:34:56","date_gmt":"2026-01-16T10:34:56","guid":{"rendered":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/?p=1475"},"modified":"2026-01-17T10:39:02","modified_gmt":"2026-01-17T09:39:02","slug":"symbolic-ai-and-smt-solving","status":"publish","type":"post","link":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/2026\/01\/16\/symbolic-ai-and-smt-solving\/","title":{"rendered":"PhD course: Symbolic AI and SMT solving"},"content":{"rendered":"<h1>Symbolic AI and SMT solving<\/h1>\n<p><strong>Dott. Enrico Lipparini<\/strong><br \/>\nUniversity of Cagliari<\/p>\n<p><strong>Abstract<\/strong><\/p>\n<p>Symbolic AI is an approach to Artificial Intelligence that relies on deductive reasoning to produce exact, explainable solutions to well-defined problems. This contrasts with sub-symbolic methods (e.g., machine learning, NNs, and LLMs), which use statistical learning to address a wide range of (possibly vaguely defined) tasks, producing plausible but not always correct results that are typically hard to explain. Integrating symbolic and sub-symbolic techniques is a hot topic in AI (neuro-symbolic AI).<\/p>\n<p>SMT (Satisfiability Modulo Theories) solvers are automated tools for reasoning about and rigorously solving problems involving arithmetic, arrays, bit vectors, and more. They are widely used in industrial settings for tasks such as program verification, planning, and testing.<\/p>\n<p>In this short course, we introduce Z3, an efficient and user-friendly SMT solver developed by Microsoft. We will compare it to both hand-written algorithms and LLM-based approaches on a simple illustrative problem, such as solving a Sudoku. Then, we will show how SMT solving can be used for program verification (i.e., checking whether a program satisfies a given specification), discussing some applications in smart contract security.<\/p>\n<p>Throughout the course, students will actively engage with the material by working on a series of simple, guided exercises that will be assigned during the session, allowing them to experiment directly with the tool and reinforce the concepts discussed.<\/p>\n<p><strong>Schedule<\/strong><br \/>\nFebruary 5th, 9:00-14:00, Lab Pes<\/p>\n<p><strong>Exam<\/strong><br \/>\nThe final assessment consists of a small project developed using the Z3 Python APIs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Symbolic AI and SMT solving Dott. Enrico Lipparini University of Cagliari Abstract Symbolic AI is an approach to Artificial Intelligence that relies on deductive reasoning to produce exact, explainable solutions to well-defined problems. This contrasts with sub-symbolic methods (e.g., machine learning, NNs, and LLMs), which use statistical learning to address a wide range of (possibly vaguely defined) tasks, producing plausible but not always correct results that are typically hard to explain. Integrating symbolic and sub-symbolic techniques is a hot topic in AI (neuro-symbolic AI). SMT (Satisfiability Modulo Theories) solvers are automated tools for reasoning about and rigorously solving problems involving <a href='https:\/\/dottorati.unica.it\/matematicaeinformatica\/2026\/01\/16\/symbolic-ai-and-smt-solving\/' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":244,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,11,10,2],"tags":[],"class_list":["post-1475","post","type-post","status-publish","format-standard","hentry","category-dipartimento-matematica-informatica","category-dottorato-matematica-informatica","category-events","category-news","category-9-id","category-11-id","category-10-id","category-2-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/posts\/1475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/comments?post=1475"}],"version-history":[{"count":4,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/posts\/1475\/revisions"}],"predecessor-version":[{"id":1479,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/posts\/1475\/revisions\/1479"}],"wp:attachment":[{"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/media?parent=1475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/categories?post=1475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dottorati.unica.it\/matematicaeinformatica\/wp-json\/wp\/v2\/tags?post=1475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}