Automated Reasoning: Symbolic Model Checking

Start Date: 11/15/2020

Course Type: Common Course

Course Link: https://www.coursera.org/learn/automated-reasoning-symbolic-model-checking

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

About Course

This course presents how properties of acting systems and programs can be verified automatically. The basic notion is a transition system: any system that can be described by states and steps. We present how in CTL (computation tree logic) properties like reachability can be described. Typically, a state space may be very large. One way to deal with this is symbolic model checking: a way in which sets of states are represented symbolically. A fruitful way to do so is by representing sets of states by BDDs (binary decision diagrams). Definitions and basic properties of BDDs are presented in this course, and also algorithms to compute them, as they are needed for doing CTL model checking.

Deep Learning Specialization on Coursera

Course Introduction

Automated Reasoning: Symbolic Model Checking This course is the continuation of the Automated Reasoning course, which teaches how to use formal methods in order to reason logically and empirically about programs and objects in Java. It focuses on the state-of-the-art approach to checking for correctness in programs using the Java programming language. This course focuses on two important topics: the representation of programs and the analysis of programs using the Java programming language. We will use the Java programming language to lead our reasoning throughout the course, and the analysis will focus on correctness as opposed to performance. By the end of this course, you will be able to: - know the basic facts and issues in programming using Java - check for correctness using standard programming techniques - analyze and program the Java programming language The course assumes that you already have experience with Java programming, and that you are comfortable with basic Java programming. You should have experience in one or more of the following: - Java programming, including basic file I/O, data I/O, and file I/O; - Java programming, including basic Java object-oriented analysis; - Beginning programming in Java, including basic data manipulation and manipulation, object-oriented analysis, and basic object-oriented coupling; - Beginning programming in C++, including basic object-oriented analysis, object-oriented coupling, and basic dynamic programming; - Beginning programming in Python, including basic object-oriented analysis, object-oriented coupling,

Course Tag

Related Wiki Topic

Article Example
Automated proof checking Automated proof checking is the process of using software for checking proofs for correctness. It is one of the most developed fields in automated reasoning.
Automated reasoning The most developed subareas of automated reasoning are automated theorem proving (and the less automated but more pragmatic subfield of interactive theorem proving) and automated proof checking (viewed as guaranteed correct reasoning under fixed assumptions). Extensive work has also been done in reasoning by analogy induction and abduction.
Model checking This method is known as bounded model checking. The success of Boolean satisfiability solvers in bounded model checking led to the widespread use of satisfiability solvers in symbolic model checking.
Automated reasoning Automated reasoning is an area of computer science and mathematical logic dedicated to understanding different aspects of reasoning. The study of automated reasoning helps produce computer programs that allow computers to reason completely, or nearly completely, automatically. Although automated reasoning is considered a sub-field of artificial intelligence, it also has connections with theoretical computer science, and even philosophy.
Automated proof checking Automated proof checking differs from automated theorem proving in that automated proof checking simply mechanically checks the formal workings of an existing proof, instead of trying to develop new proofs or theorems itself. Because of this, the task of automated proof verification is much simpler than that of automated theorem proving, allowing automated proof checking software to be much simpler than automated theorem proving software.
Automated reasoning Other important topics include reasoning under uncertainty and non-monotonic reasoning. An important part of the uncertainty field is that of argumentation, where further constraints of minimality and consistency are applied on top of the more standard automated deduction. John Pollock's OSCAR system is an example of an automated argumentation system that is more specific than being just an automated theorem prover.
Automated proof checking Because of this small size, some automated proof checking systems can have less than a thousand lines of core code, and are thus themselves amenable to both hand-checking and automated software verification.
Automated reasoning Tools and techniques of automated reasoning include the classical logics and calculi, fuzzy logic, Bayesian inference, reasoning with maximal entropy and a large number of less formal "ad hoc" techniques.
Model checking the same approach was generalized to model checking for the Linear Temporal Logic LTL (the planning problem corresponds to model-checking for safety properties).
Model checking In computer science, model checking or property checking refers to the following problem:
Automated reasoning Some consider the Cornell Summer meeting of 1957, which brought together a large number of logicians and computer scientists, as the origin of automated reasoning, or automated deduction. Others say that it began before that with the 1955 Logic Theorist program of Newell, Shaw and Simon, or with Martin Davis’ 1954 implementation of Presburger’s decision procedure (which proved that the sum of two even numbers is even). Automated reasoning, although a significant and popular area of research, went through an "AI winter" in the eighties and early nineties. Luckily, it got revived after that. For example, in 2005, Microsoft started using verification technology in many of their internal projects and is planning to include a logical specification and checking language in their 2012 version of Visual C.
Automated proof checking The Mizar system, HOL Light, and Metamath are examples of automated proof checking systems.
Model checking An important class of model checking methods have been developed for checking models of hardware and software designs
Extended static checking The techniques used in extended static checking come from various fields of Computer Science, including static program analysis, symbolic simulation, model checking, abstract interpretation, SAT solving and automated theorem proving and type checking. Extended static checking is generally performed only at an intraprocedural level (rather than an interprocedural one) in order to scale to large programs. Furthermore, extended static checking aims to report errors by exploiting user-supplied specifications, in the form of pre- and post-conditions, loop invariants and class invariants.
Association for Automated Reasoning The Association for Automated Reasoning (AAR) is a non-profit corporation that serves as an association of researchers working on automated theorem proving, automated reasoning, and related fields. It organizes the CADE and IJCAR conferences and publishes a roughly quarterly newsletter.
Reasoning system With the rise in popularity of expert systems many new types of automated reasoning were applied to diverse problems in government and industry. Some such as case-based reasoning were off shoots of expert systems research. Others such as constraint satisfaction algorithms were also influenced by fields such as decision technology and linear programming. Also, a completely different approach, one not based on symbolic reasoning but on a connectionist model has also been extremely productive. This latter type of automated reasoning is especially well suited to pattern matching and signal detection types of problems such as text searching and face matching.
Automated proof checking Automated proof checking can be done either as a batch operation, or interactively, as part of an interactive theorem proving system.
Journal of Automated Reasoning The Journal of Automated Reasoning was established in 1983 by Larry Wos who was its editor in chief until 1992. It covers research and advances in automated reasoning — mechanical verification of theorems and other deductions in classical and non-classical logic.
Symbolic trajectory evaluation Symbolic trajectory evaluation (STE) is a lattice-based model checking technology that uses a form of symbolic simulation. STE is essentially used for computer hardware, that is circuit verification. The technique uses abstraction, meaning that details of the circuit behaviour are removed from the circuit model. It was first developed by Carl Seger and Randy Bryant in 1995 as an alternative to "classical" symbolic model checking.
Handbook of Automated Reasoning The Handbook of Automated Reasoning (ISBN 0444508139, 2128 pages) is a collection of survey articles on the field of automated reasoning. Published on June 2001 by MIT Press, it is edited by John Alan Robinson and Andrei Voronkov. Volume 1 describes methods for classical logic, first-order logic with equality and other theories, and induction. Volume 2 covers higher-order, non-classical and other kinds of logic.