<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://prob.hhu.de/w/index.php?action=history&amp;feed=atom&amp;title=Symbolic_Model_Checking</id>
	<title>Symbolic Model Checking - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://prob.hhu.de/w/index.php?action=history&amp;feed=atom&amp;title=Symbolic_Model_Checking"/>
	<link rel="alternate" type="text/html" href="https://prob.hhu.de/w/index.php?title=Symbolic_Model_Checking&amp;action=history"/>
	<updated>2026-05-27T08:03:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://prob.hhu.de/w/index.php?title=Symbolic_Model_Checking&amp;diff=3334&amp;oldid=prev</id>
		<title>Sebastian Krings: Created page with &quot;= Overview =  The current nightly builds of  ProB support different symbolic model checking algorithms:  * Bounded Model Checking (BMC), * k-Induction, and * different Variant...&quot;</title>
		<link rel="alternate" type="text/html" href="https://prob.hhu.de/w/index.php?title=Symbolic_Model_Checking&amp;diff=3334&amp;oldid=prev"/>
		<updated>2016-01-22T15:53:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Overview =  The current nightly builds of  ProB support different symbolic model checking algorithms:  * Bounded Model Checking (BMC), * k-Induction, and * different Variant...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The current nightly builds of  ProB support different symbolic model checking algorithms:&lt;br /&gt;
&lt;br /&gt;
* Bounded Model Checking (BMC),&lt;br /&gt;
* k-Induction, and&lt;br /&gt;
* different Variants of the IC3 algorithm.&lt;br /&gt;
&lt;br /&gt;
As opposed to [[Constraint_Based_Checking|constraint-based checking]], these algorithms find counterexamples which are reachable from the INITIALISATION. As opposed to [[Consistency_Checking |ordinary model checking]], they do not build up the state space explicitly, e.g., they do not compute all possible solutions for parameters and constants.&lt;br /&gt;
This can be useful when the out-degree of the state-space is very high, i.e., when there are many possible solutions for the constants, the initialisation and/or the individual operations and their parameters.  &lt;br /&gt;
&lt;br /&gt;
In addition to the algorithms explained here, BMC*, a bounded model checking algorithm based on a different technique is available in Prob. See [[Bounded Model Checking|its wiki page]] for details.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MACHINE VerySimpleCounterWrong&lt;br /&gt;
CONSTANTS lim&lt;br /&gt;
PROPERTIES lim = 2**25&lt;br /&gt;
VARIABLES ct&lt;br /&gt;
INVARIANT&lt;br /&gt;
 ct:INTEGER &amp;amp; ct &amp;lt; lim&lt;br /&gt;
INITIALISATION ct::0..(lim-1)&lt;br /&gt;
OPERATIONS&lt;br /&gt;
  Inc(i) = PRE i:1..1000 &amp;amp; ct + i &amp;lt;= lim THEN ct := ct+i END;&lt;br /&gt;
  Reset = PRE ct = lim THEN ct := 0 END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ProB model checker will here run for a very long time before uncovering the error that occurs when &amp;lt;tt&amp;gt;ct&amp;lt;/tt&amp;gt; is set to lim. If you run the [[TLC|TLC backend]] you will get the error message &amp;quot;&amp;lt;tt&amp;gt;Too many possible next states for the last state in the trace.&amp;lt;/tt&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
However, for the symbolic model checking techniques this is less of a problem.&lt;br /&gt;
You can use them via command-line version of ProB as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ probcli VerySimpleCounterWrong.mch -symbolic_model_check bmc&lt;br /&gt;
K = 0&lt;br /&gt;
solve/2: result of prob: contradiction_found&lt;br /&gt;
K = 1&lt;br /&gt;
solve/2: result of prob: contradiction_found&lt;br /&gt;
K = 2&lt;br /&gt;
solve/2: result of prob: contradiction_found&lt;br /&gt;
K = 3&lt;br /&gt;
solve/2: result of prob: contradiction_found&lt;br /&gt;
K = 4&lt;br /&gt;
solve/2: result of prob: solution&lt;br /&gt;
successor_found(0)&lt;br /&gt;
 --&amp;gt; INITIALISATION(0)&lt;br /&gt;
successor_found(1)&lt;br /&gt;
 --&amp;gt; Inc&lt;br /&gt;
successor_found(2)&lt;br /&gt;
 --&amp;gt; Inc&lt;br /&gt;
successor_found(3)&lt;br /&gt;
 --&amp;gt; Inc&lt;br /&gt;
successor_found(4)&lt;br /&gt;
 --&amp;gt; Inc&lt;br /&gt;
! *** error occurred ***&lt;br /&gt;
! invariant_violation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;bmc&amp;quot; you can use &amp;quot;kinduction&amp;quot; and &amp;quot;ic3&amp;quot; as command line arguments in order to use the other algorithms.&lt;br /&gt;
&lt;br /&gt;
The algorithms are also available from within ProB Tcl/Tk. They can be found inside the &amp;quot;Symbolic Model Checking&amp;quot; sub-menu of the &amp;quot;Analyse&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
= More details =&lt;br /&gt;
&lt;br /&gt;
A paper describing the symbolic model checking algorithms and how they are applied to B and Event-B machines has been submitted to ABZ 2016.&lt;/div&gt;</summary>
		<author><name>Sebastian Krings</name></author>
	</entry>
</feed>