Boolean SAT/SMT Solvers for Software Engineering — различия между версиями

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м
 
(не показаны 13 промежуточные версии 2 участников)
Строка 1: Строка 1:
 +
[[Категория:Спецкурсы кафедры МК (архив)]]
 +
 
Спецкурс на английском языке для студентов магистратуры.
 
Спецкурс на английском языке для студентов магистратуры.
Лектор курса - профессор университета Ватерлоо (Канада), Виджей Ганеш (Vidjay Ganesh).
+
Лектор курса - профессор университета Ватерлоо (Канада), Виджей Ганеш (Vijay Ganesh).
  
 
== Расписание занятий ==
 
== Расписание занятий ==
*Занятия первой части курса: 4,5,7,8 апреля в аудитории 526б, начало в 18:00.
+
*Занятия первой части курса: 4,5,7 и 8 апреля 2016 года в аудитории 526б, начало в 18:00.
*Занятия второй части курса: будут объявлены позже.
+
*Занятия второй части курса: 16 b 17 июня 2016 года в аудитории 526б, начало в 18:00.
  
 
== Course annotation ==
 
== Course annotation ==
Computer-aided reasoning tools, such as SAT/SMT solvers, have had a dramatic impact on software engineering and security in recent years. So much so that a large number of software engineering tools these days are designed primarily using a SAT or SMT solver as a backend. The primary reason for this recent adoption of solvers in software engineering is the continued improvement in their performance and expressive power. For example, over the last 15 years we have seen a 1000x improvement in the performance of conflict-driven clause-learning SAT solvers. Given their foundational importance and impact, it is important for any student wanting to do research in software engineering, security, or mathematics to have a thorough understanding of SAT/SMT solvers and proof assistants. In this course, we will cover the theory and practice of automated reasoning tools such as conflict-driven clause learning SAT solvers, SMT solvers, and their applications. Below find a brief summary of the topics that we will cover in the course. The course consists of 8 lectures of 3 hour each.
+
Computer-aided reasoning tools, such as SAT/SMT solvers, have had a dramatic impact on software engineering and security in recent years. So much so that a large number of software engineering tools these days are designed primarily using a SAT or SMT solver as a backend. The primary reason for this recent adoption of solvers in software engineering is the continued improvement in their performance and expressive power. For example, over the last 15 years we have seen a 1000x improvement in the performance of conflict-driven clause-learning SAT solvers. Given their foundational importance and impact, it is important for any student wanting to do research in software engineering, security, or mathematics to have a thorough understanding of SAT/SMT solvers and proof assistants. In this course, we will cover the theory and practice of automated reasoning tools such as conflict-driven clause learning SAT solvers, SMT solvers, and their applications. Below find a brief summary of the topics that we will cover in the course. The course consists of 7 lectures of 3 hour each.
  
 +
== Course projects ==
 +
* [[Media:SAT_SMT_Vijay_Ganesh_projects.pdf| Course projects topics]]
 
== Course structure ==
 
== Course structure ==
 
[[Media:SAT_SMT_Vijay_Ganesh_intro.pdf| Presentation of course overview]]
 
[[Media:SAT_SMT_Vijay_Ganesh_intro.pdf| Presentation of course overview]]
 
=== Week 1 Lectures ===
 
=== Week 1 Lectures ===
 
* Lecture 1: Boolean logic, the Boolean satisfiability problem, introduction to SAT solvers, an overview of application of SAT solvers to automatic software testing.
 
* Lecture 1: Boolean logic, the Boolean satisfiability problem, introduction to SAT solvers, an overview of application of SAT solvers to automatic software testing.
[[Media:SAT_SMT_Vijay_Ganesh_lecture_1.pdf| Presentation]]
+
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_1.pdf| Presentation]]
  
 
* Lecture 2: Conflict-driven clause-learning SAT solvers, branching heuristics, and conflict analysis (part I)
 
* Lecture 2: Conflict-driven clause-learning SAT solvers, branching heuristics, and conflict analysis (part I)
 +
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_2_VSIDS.pdf| Presentation - Understanding VSIDS Branching Heuristics in CDCL SAT solvers]]
 +
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_2_ML.pdf| Presentation - Combining machine learning with deduction for SAT solvers]]
 +
**Articles:
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_HVC2015.pdf| Understanding VSIDS Branching Heuristics in CDCL SAT solvers]]
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_LRB2016.pdf| Learning Rate Based Branching Heuristic for SAT Solvers]]
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_AAAI2016.pdf| Exponential Recency Weighted Average Branching Heuristic for SAT Solvers]]
 
* Lecture 3:  Conflict-driven clause-learning SAT solvers, branching heuristics, and conflict analysis, programmatic SAT (part II)
 
* Lecture 3:  Conflict-driven clause-learning SAT solvers, branching heuristics, and conflict analysis, programmatic SAT (part II)
 +
**Articles:
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_ICCAd96.pdf| GRASP—A New Search Algorithm for Satisfiability]]
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_vg2014.pdf| Impact of Community Structure on SAT Solver Performance]]
 +
*# [[Media:SAT_SMT_Vijay_Ganesh_cav2002.pdf| The Quest for Efficient Boolean Satisfiability Solvers]]
 
* Lecture 4: Application of SAT solvers to symbolic-execution based testing
 
* Lecture 4: Application of SAT solvers to symbolic-execution based testing
  
 
=== Week 2 Lectures ===
 
=== Week 2 Lectures ===
* Lecture 5: First-order logic, first-order theories and related SAT problems
+
* Lecture 5: Motivation for SMT solvers, and combination of decision procedures.
* Lecture 6: SMT solvers, DPLL(T), combination of theories
+
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_5.pdf| Presentation]]
* Lecture 7: Solvers for theories over bit-vectors and arrays
+
* Lecture 6: Combination of decision procedures.
* Lecture 8: Solvers for theories over strings
+
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_6.pdf| Presentation]]
 +
* Lecture 7: Counterexample-guided abstraction refinement(CEGAR). CEGAR-based SMT solver.
 +
**[[Media:SAT_SMT_Vijay_Ganesh_lecture_5.pdf| Presentation]]
  
 
== Brief Bio of Dr. Vijay Ganesh ==
 
== Brief Bio of Dr. Vijay Ganesh ==
Строка 30: Строка 46:
  
 
Dr. Vijay Ganesh is an assistant professor at the University of Waterloo, Canada, since September 2012. Prior to that he was a Research Scientist at the Massachusetts Institute of Technology (2007-2012), and received his PhD in computer science from Stanford University in 2007. Vijay's primary area of research is the theory and practice of automated reasoning aimed at software engineering, formal methods and security. In this context he has developed  many SAT/SMT solvers, most notably, STP, HAMPI, and Z3str2. He has also worked on theoretical results in the context of rich string theories. For his research, he recently won an IBM Research Faculty Award in 2015, two Google Research Faculty Awards in 2013 and 2011, and 7 best paper awards/honors at conferences like SAT, CAV, CADE, and DATE. His solver STP has won numerous awards in highly competitive international SMT solver competitions. Recently he was invited to the first Heidelberg Laureate Forum in 2013, a gathering where young researchers from around the world were selected to meet with leading computer scientists and mathematicians.
 
Dr. Vijay Ganesh is an assistant professor at the University of Waterloo, Canada, since September 2012. Prior to that he was a Research Scientist at the Massachusetts Institute of Technology (2007-2012), and received his PhD in computer science from Stanford University in 2007. Vijay's primary area of research is the theory and practice of automated reasoning aimed at software engineering, formal methods and security. In this context he has developed  many SAT/SMT solvers, most notably, STP, HAMPI, and Z3str2. He has also worked on theoretical results in the context of rich string theories. For his research, he recently won an IBM Research Faculty Award in 2015, two Google Research Faculty Awards in 2013 and 2011, and 7 best paper awards/honors at conferences like SAT, CAV, CADE, and DATE. His solver STP has won numerous awards in highly competitive international SMT solver competitions. Recently he was invited to the first Heidelberg Laureate Forum in 2013, a gathering where young researchers from around the world were selected to meet with leading computer scientists and mathematicians.
[[Категория:Спецкурсы кафедры МК]]
 

Текущая версия на 18:00, 9 февраля 2019


Спецкурс на английском языке для студентов магистратуры. Лектор курса - профессор университета Ватерлоо (Канада), Виджей Ганеш (Vijay Ganesh).

Расписание занятий

  • Занятия первой части курса: 4,5,7 и 8 апреля 2016 года в аудитории 526б, начало в 18:00.
  • Занятия второй части курса: 16 b 17 июня 2016 года в аудитории 526б, начало в 18:00.

Course annotation

Computer-aided reasoning tools, such as SAT/SMT solvers, have had a dramatic impact on software engineering and security in recent years. So much so that a large number of software engineering tools these days are designed primarily using a SAT or SMT solver as a backend. The primary reason for this recent adoption of solvers in software engineering is the continued improvement in their performance and expressive power. For example, over the last 15 years we have seen a 1000x improvement in the performance of conflict-driven clause-learning SAT solvers. Given their foundational importance and impact, it is important for any student wanting to do research in software engineering, security, or mathematics to have a thorough understanding of SAT/SMT solvers and proof assistants. In this course, we will cover the theory and practice of automated reasoning tools such as conflict-driven clause learning SAT solvers, SMT solvers, and their applications. Below find a brief summary of the topics that we will cover in the course. The course consists of 7 lectures of 3 hour each.

Course projects

Course structure

Presentation of course overview

Week 1 Lectures

  • Lecture 1: Boolean logic, the Boolean satisfiability problem, introduction to SAT solvers, an overview of application of SAT solvers to automatic software testing.

Week 2 Lectures

  • Lecture 5: Motivation for SMT solvers, and combination of decision procedures.
  • Lecture 6: Combination of decision procedures.
  • Lecture 7: Counterexample-guided abstraction refinement(CEGAR). CEGAR-based SMT solver.

Brief Bio of Dr. Vijay Ganesh

Official website

Dr. Vijay Ganesh is an assistant professor at the University of Waterloo, Canada, since September 2012. Prior to that he was a Research Scientist at the Massachusetts Institute of Technology (2007-2012), and received his PhD in computer science from Stanford University in 2007. Vijay's primary area of research is the theory and practice of automated reasoning aimed at software engineering, formal methods and security. In this context he has developed many SAT/SMT solvers, most notably, STP, HAMPI, and Z3str2. He has also worked on theoretical results in the context of rich string theories. For his research, he recently won an IBM Research Faculty Award in 2015, two Google Research Faculty Awards in 2013 and 2011, and 7 best paper awards/honors at conferences like SAT, CAV, CADE, and DATE. His solver STP has won numerous awards in highly competitive international SMT solver competitions. Recently he was invited to the first Heidelberg Laureate Forum in 2013, a gathering where young researchers from around the world were selected to meet with leading computer scientists and mathematicians.