<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.research.microsoft.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Z3, Theorem Prover</title><link>http://community.research.microsoft.com/forums/74.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Welcome to Z3 Forum</title><link>http://community.research.microsoft.com/forums/thread/294.aspx</link><pubDate>Tue, 08 Jan 2008 20:17:03 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:294</guid><dc:creator>Leonardo de Moura</dc:creator><slash:comments>4</slash:comments><comments>http://community.research.microsoft.com/forums/thread/294.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=294</wfw:commentRss><description>&lt;p&gt;Z3 forum is intended for general discussions involving Z3, as well as announcements of new tools, language changes, etc.&lt;/p&gt;
&lt;p&gt;The Z3 website is located at: &lt;a href="http://research.microsoft.com/projects/z3/"&gt;http://research.microsoft.com/projects/z3/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to enable predicate labeling in SMTLIB format?</title><link>http://community.research.microsoft.com/forums/thread/7392.aspx</link><pubDate>Fri, 20 Nov 2009 08:37:13 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:7392</guid><dc:creator>jasonweiyi</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/7392.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=7392</wfw:commentRss><description>&lt;p&gt;Does Z3 support predicate labeling in SMTLIB file?&lt;/p&gt;
&lt;p&gt;We tried to write labels, but Z3 seems to ignore all of them.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Z3 MacOS X</title><link>http://community.research.microsoft.com/forums/thread/7293.aspx</link><pubDate>Wed, 04 Nov 2009 09:43:38 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:7293</guid><dc:creator>barbaravieira</dc:creator><slash:comments>0</slash:comments><comments>http://community.research.microsoft.com/forums/thread/7293.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=7293</wfw:commentRss><description>&lt;p&gt;I would like to know if there is any version of Z3 to MacOS X and where I can find it.&lt;/p&gt;
&lt;p&gt;If there isn&amp;#39;t any version, could you please provide one to MacOS X (Snow Leopard)?&lt;/p&gt;
&lt;p&gt;Thank you in advance.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Z3 Unsat Core Support</title><link>http://community.research.microsoft.com/forums/thread/7149.aspx</link><pubDate>Fri, 16 Oct 2009 23:23:02 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:7149</guid><dc:creator>sagarj</dc:creator><slash:comments>0</slash:comments><comments>http://community.research.microsoft.com/forums/thread/7149.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=7149</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-family:&amp;#39;PrimaSans BT,Verdana,sans-serif&amp;#39;;"&gt; Is there a way in Z3 to output the subset of clauses which forms the unsat core given an unsatisfiable conjuction of clauses?&lt;/span&gt;&lt;span style="font-family:&amp;#39;PrimaSans BT,Verdana,sans-serif&amp;#39;;"&gt; In my case input formula is a conjunction of atomic formulas in QF_AUFBV.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;PrimaSans BT,Verdana,sans-serif&amp;#39;;"&gt;It would be really great if someone can help me with my query.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Sagar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to deal with this expression?</title><link>http://community.research.microsoft.com/forums/thread/7001.aspx</link><pubDate>Mon, 28 Sep 2009 10:45:27 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:7001</guid><dc:creator>xyz031702</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/7001.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=7001</wfw:commentRss><description>&lt;p&gt;Dear All&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I got a problem when dealing with the following Z3 expression:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(benchmark tst&amp;nbsp; :extrafuns ((V1 Real)(flag Real)) :formula (not (=&amp;nbsp; (* V1 flag) flag)))&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The output result is a bit strange:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;potential model:&amp;nbsp;&amp;nbsp;&amp;nbsp; V1---&amp;gt;0&amp;nbsp; ,&amp;nbsp; flag----&amp;gt;0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So does this mean Z3 cannot find a possible solution for it ? Is there any other similar cases?&amp;nbsp; Or what is a general expression for these similar cases?&lt;/p&gt;
&lt;p&gt;Expecting for replies&amp;nbsp;,&lt;/p&gt;
&lt;p&gt;Thanks and &amp;nbsp;best regards,&lt;/p&gt;
&lt;p&gt;Ding Sun&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to support the following operations:   &amp;, %, | </title><link>http://community.research.microsoft.com/forums/thread/6956.aspx</link><pubDate>Thu, 24 Sep 2009 14:40:21 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6956</guid><dc:creator>xyz031702</dc:creator><slash:comments>2</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6956.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6956</wfw:commentRss><description>&lt;p&gt;Hi, all&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I am a beginner using Z3, which already helps me a lot.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; However I met problems when&amp;nbsp;meeting operations : &lt;strong&gt;&amp;amp;(bitwise And) , %(mod)&amp;nbsp;,|(bitwise Or)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I try to prove:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;strong&gt;(benchmark tst&amp;nbsp; :extrafuns ((a Real)) :formula (not (= (% a 2) 1)) :formula (&amp;gt; a 0))&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;or &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;(benchmark tst&amp;nbsp; :extrafuns ((a Real)) :formula (not (= (&amp;amp; a 2) 1)) :formula (&amp;gt; a 0))&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;or &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;(benchmark tst&amp;nbsp; :extrafuns ((a Real)) :formula (not (= (| a 2) 1)) :formula (&amp;gt; a 0))&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The prover will throw exceptions saying &amp;quot;Error: could not find overload for &amp;#39;&lt;strong&gt;%&lt;/strong&gt;&amp;#39; &amp;quot;.&lt;/p&gt;
&lt;p&gt;Is there anyone knowing how to solve such problem? &lt;/p&gt;
&lt;p&gt;Expecting for the replies and suggestions. Thanks a lot.&lt;/p&gt;
&lt;p&gt;Ding Sun&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>New member need some support</title><link>http://community.research.microsoft.com/forums/thread/6826.aspx</link><pubDate>Mon, 07 Sep 2009 17:47:24 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6826</guid><dc:creator>YangHoun</dc:creator><slash:comments>7</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6826.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6826</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m Yang. I&amp;#39;m student &amp;amp; I have a small research about Software Verification, I search on Internet &amp;amp;&amp;nbsp;find &amp;nbsp;Z3 prover/solver. I think it is&amp;nbsp;tool that i need. But in a short time, I can&amp;#39;t handle all of API of Z3, so I have a confuse problem:&lt;/p&gt;
&lt;p&gt;How do I write some structure such as if....else; switch...case; while; for; ... in Z3?&lt;/p&gt;
&lt;p&gt;And how I write a programe to check a small program that&amp;nbsp;is right or wrong?&lt;/p&gt;
&lt;p&gt;Example: I have a program named &amp;quot;greaterValue&amp;quot;, it return a greater value among two value (int a, int b). But I have wrong code as:&lt;/p&gt;
&lt;p&gt;int greaterValue(int a, int b){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int result;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(a&amp;gt;=b)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = &amp;nbsp;a+10;&amp;nbsp; // the right code must be: result = a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = b;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;//The correct expression for this program: &lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-fareast-font-family:SimSun;mso-ansi-language:ES;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;" lang="ES"&gt;(((x&amp;gt;=y)&amp;amp;&amp;amp;(max==x))||((x&amp;lt;y)&amp;amp;&amp;amp;(max==y)))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;How I use Z3 to recognize this code is wrong &amp;amp; generate counter-example to illustrate.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you very much.&lt;/p&gt;
&lt;p&gt;Yang. H&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Cardinality constraints</title><link>http://community.research.microsoft.com/forums/thread/6889.aspx</link><pubDate>Thu, 17 Sep 2009 20:40:46 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6889</guid><dc:creator>kornevgen</dc:creator><slash:comments>2</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6889.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6889</wfw:commentRss><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;I try to use cardinality constraints but Z3 doesn&amp;#39;t solve my constraints:&lt;/p&gt;
&lt;p&gt;(benchmark test&lt;br /&gt;:logic QF_BV&lt;br /&gt;&lt;br /&gt;:extrafuns ((x BitVec[5]) (y1 Int) (y2 Int))&lt;br /&gt;&lt;br /&gt;:assumption&lt;br /&gt;(= y1 (ite (= (extract[2:0] x) bv1[3]) 1 0) ) &lt;br /&gt;&lt;br /&gt;:assumption&lt;br /&gt;(= y2 (ite (= (extract[4:2] x) bv1[3]) 1 0) ) &lt;br /&gt;&lt;br /&gt;:assumption&lt;br /&gt;(&amp;lt;= 2 (+ y1 y2))&lt;br /&gt;&lt;br /&gt;)&lt;/p&gt;
&lt;p&gt;And Z3 2.1 returns the following model:&lt;/p&gt;
&lt;p&gt;x -&amp;gt; bv1[5]&lt;br /&gt;y1 -&amp;gt; 1&lt;br /&gt;y2 -&amp;gt; 0&lt;br /&gt;sat&lt;/p&gt;
&lt;p&gt;However these constraints must be UNSAT !&amp;nbsp; because it doesn&amp;#39;t exist &amp;quot;x&amp;quot; such as x[4:2] == 1 and x[2:0] == 1.&lt;/p&gt;
&lt;p&gt;How my constraints can be corrected ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How do I represent the control and loop structures using Z3</title><link>http://community.research.microsoft.com/forums/thread/6837.aspx</link><pubDate>Wed, 09 Sep 2009 10:22:20 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6837</guid><dc:creator>KimYLee</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6837.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6837</wfw:commentRss><description>&lt;p&gt;Hello, &lt;/p&gt;
&lt;p&gt;How do I represent some control and loop structures such as:&lt;br /&gt;if...else;&lt;br /&gt;for();&lt;br /&gt;while();&lt;/p&gt;
&lt;p&gt;by using Z3 ???&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Thanks&lt;/p&gt;
&lt;p&gt;Lee, Kim&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Using C API with Visual C++ 6 issue?</title><link>http://community.research.microsoft.com/forums/thread/6763.aspx</link><pubDate>Wed, 26 Aug 2009 15:15:52 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6763</guid><dc:creator>cosinepi</dc:creator><slash:comments>2</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6763.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6763</wfw:commentRss><description>&lt;p&gt;Hi all, &lt;/p&gt;
&lt;p&gt;I just started with Z3 for a few days. &lt;/p&gt;
&lt;p&gt;I have Visual Studio 6 Enterprise Edition on my lab machine, on a 32bit WinXP platform.&lt;/p&gt;
&lt;p&gt;I downloaded Z3 2.1, installed, and am now trying to run the examples in the &amp;#39;examples\c&amp;#39; directory. When I type &amp;#39;build.cmd&amp;#39; in this directory, the following errors are given: &lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;C:\Program Files\Microsoft Research\Z3-2.1\examples\c&amp;gt;cl /I ..\..\include ..\..\bin\z3.lib test_capi.c&lt;br /&gt;Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86&lt;br /&gt;Copyright (C) Microsoft Corp 1984-1998. All rights reserved.&lt;br /&gt;&lt;br /&gt;test_capi.c&lt;br /&gt;..\..\include\z3_api.h(2183) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;..\..\include\z3_api.h(2195) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;..\..\include\z3_api.h(2453) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;..\..\include\z3_api.h(2453) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;..\..\include\z3_api.h(2488) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;..\..\include\z3_api.h(2501) : error C2632: &amp;#39;long&amp;#39; followed by &amp;#39;long&amp;#39; is illegal&lt;br /&gt;&lt;br /&gt;C:\Program Files\Microsoft Research\Z3-2.1\examples\c&amp;gt;&lt;/p&gt;
&lt;p&gt;Similar error happens when I copy the files bin\z3.dll, bin\z3.lib, include\z3.h, and include\z3_api.h into my program folder and #include &amp;quot;z3.h&amp;quot;. &lt;/p&gt;
&lt;p&gt;I delved into the z3_api.h file and found that these lines are surrounded within the #ifndef CAMLIDL...#endif block. I then added the /D &amp;quot;CAMLIDL&amp;quot; switch to the build command that I use, then another syntax error at line 914 of z3_api.h arises. The surrounding lines there are &lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;#ifndef CAMLIDL&lt;br /&gt;#ifdef __cplusplus&lt;br /&gt;extern &amp;quot;C&amp;quot; {&lt;br /&gt;#endif // __cplusplus&lt;br /&gt;#else&lt;br /&gt;[pointer_default(ref)] interface Z3 {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // line 914 of z3_api.h&lt;br /&gt;#endif // CAMLIDL&lt;/p&gt;
&lt;p&gt;The syntax error just reports a &amp;#39;[&amp;#39;.&lt;/p&gt;
&lt;p&gt;Is there any hint why this happens and how to fix it? Thank you in advance! (BTW, the .NET API examples are working fine. However for some reason I can only use C API&amp;#39;s.)&lt;/p&gt;
&lt;p&gt;--Vincent&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Why is it SAT ?</title><link>http://community.research.microsoft.com/forums/thread/6433.aspx</link><pubDate>Mon, 20 Jul 2009 06:50:45 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6433</guid><dc:creator>kornevgen</dc:creator><slash:comments>0</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6433.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6433</wfw:commentRss><description>&lt;p&gt;Good day!&lt;/p&gt;
&lt;p&gt;Z3 says the following smt is SAT&lt;/p&gt;
&lt;p&gt;(benchmark xx&lt;br /&gt;:logic QF_BV&lt;br /&gt;:extrafuns ((x Int))&lt;br /&gt;:assumption&lt;br /&gt;(and (&amp;gt; x 0) (&amp;lt; x 1) )&lt;br /&gt;)&lt;/p&gt;
&lt;p&gt;with model &amp;quot;x -&amp;gt; val!0&amp;quot;&lt;/p&gt;
&lt;p&gt;Yes, this code has an error: the correct logic is QF_LIA but not QF_BV (Z3 says UNSAT with QF_LIA and it is correct, of course). So, my question is what means &amp;quot;val!0&amp;quot; ? some unknown 0&amp;#39;th value ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Does Z3 performs modular checks (or method-scope checks, or...)? </title><link>http://community.research.microsoft.com/forums/thread/5654.aspx</link><pubDate>Sun, 14 Jun 2009 08:43:35 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5654</guid><dc:creator>ElenaPavlova</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5654.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5654</wfw:commentRss><description>&lt;p&gt;Greetings,&lt;/p&gt;
&lt;p&gt;the question is&lt;/p&gt;
&lt;p&gt;how deep does Z3 considers c#+spec# code paths when verifying it?&lt;/p&gt;
&lt;p&gt;that is - are method constraints (&amp;#39;&amp;#39;ensures&amp;#39;&amp;#39; for example) verified within the method they are declared in, considering external function calls using only their pre- and post- conditions? Or these external functions are also considered in detail (including possible execution paths)&lt;/p&gt;
&lt;p&gt;or within a module, when dealing with, for example, class invariants:&lt;/p&gt;
&lt;p&gt;does Z3 verifies class invariants within the module scope using constraints for description of interaction with external modules? Or it uses the full system (program) description to verify any property?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Information on "Z3,Theorem Prover"</title><link>http://community.research.microsoft.com/forums/thread/6117.aspx</link><pubDate>Wed, 01 Jul 2009 16:32:10 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:6117</guid><dc:creator>Hernan Weintraub</dc:creator><slash:comments>0</slash:comments><comments>http://community.research.microsoft.com/forums/thread/6117.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=6117</wfw:commentRss><description>&lt;p&gt;Hello to All &lt;/p&gt;
&lt;p&gt;Where I can find Articles about this Subject(&amp;quot;Z3,Theorem Prover&amp;quot;)&amp;nbsp; ?&lt;/p&gt;
&lt;p&gt;I do not understand the meaning of &amp;quot;Theorem Prover&amp;quot;. &lt;/p&gt;
&lt;p&gt;The&amp;nbsp;main target of this is to develope some tools that will Prove some Mathematical Theorems in a Computer(Artificial Intelligence).&lt;/p&gt;
&lt;p&gt;I saw in the forum that it has a connection to sound but in somewhere else I saw a connection to Algorithms.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://community.research.microsoft.com/emoticons/emotion-10.gif" alt="Embarrassed" /&gt;Sorry about my Ignorance.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Many Thanks &lt;/p&gt;
&lt;p&gt;Hernan &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Signed Bitvectors, confused about extending and extraction</title><link>http://community.research.microsoft.com/forums/thread/5598.aspx</link><pubDate>Wed, 10 Jun 2009 16:01:11 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5598</guid><dc:creator>Menno</dc:creator><slash:comments>5</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5598.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5598</wfw:commentRss><description>&lt;p&gt;I was wondering why the following AST is unsat:&lt;/p&gt;
&lt;p&gt;(= (extract 31 0 (sign_extend 32 -5)) -5)&lt;/p&gt;
&lt;p&gt;-5 has a bitvector type of size 32, which is then sign extended it to a bitvector of size 64 and then the 32 lower bits are extracted. I thought that the resulting bitvector should be equal to the original bitvector.&lt;br /&gt;Note that this example returns sat for positive bitvectors.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Bit-vector concat operator being ignored?</title><link>http://community.research.microsoft.com/forums/thread/5592.aspx</link><pubDate>Wed, 10 Jun 2009 12:31:20 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5592</guid><dc:creator>SeanHn</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5592.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5592</wfw:commentRss><description>&lt;p&gt;Hey guys,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m trying to express the condition gathered from a conditional jump. My program instrumentation is performed at the byte level so in the case of a conditional based on a word or dword I need to concatenate the constituent bytes into a new variable before making the comparison. It is this concatenation that is giving trouble.
The following is a quick test I just wrote to see how the concat operator worked. &lt;/p&gt;
&lt;p&gt;I am aiming to make the formula unsatisfiable by constraining i0 and i1 to 0 and then expressing c1 as the concatenation of these variables; I then ask the solver if it is possible for c1 to equal 22. (I&amp;#39;m using the latest public version of Z3 for Windows)&lt;/p&gt;
&lt;p&gt;(benchmark test
&lt;/p&gt;
&lt;p&gt;:status unknown
&lt;/p&gt;
&lt;p&gt;:logic QF_BV
&lt;/p&gt;
&lt;p&gt;:extrafuns ((i0 BitVec&lt;img src="http://community.research.microsoft.com/emoticons/emotion-29.gif" alt="Music" /&gt;)(i1 BitVec&lt;img src="http://community.research.microsoft.com/emoticons/emotion-29.gif" alt="Music" /&gt;)(c1 BitVec[16]))
&lt;/p&gt;
&lt;p&gt;:assumption (and (= i0 bv0&lt;img src="http://community.research.microsoft.com/emoticons/emotion-29.gif" alt="Music" /&gt;)(= i1 bv0&lt;img src="http://community.research.microsoft.com/emoticons/emotion-29.gif" alt="Music" /&gt;)(concat i0 i1 c1))
&lt;/p&gt;
&lt;p&gt;:formula ((= c1 bv22[16]))
)&lt;/p&gt;
&lt;p&gt;
Z3 tells me this is satisfiable, and the model it returns is as follows:
&lt;/p&gt;
&lt;p&gt;partitions:
&lt;/p&gt;
&lt;p&gt;*2 (i1 i0) -&amp;gt; 0:bv8
&lt;/p&gt;
&lt;p&gt;*3 (c1) -&amp;gt; 22:bv16
&lt;/p&gt;
&lt;p&gt;Which seems to indicate it isn&amp;#39;t considering the effect of restricting i0/i1 to 0 when assigning a value to c1. Is there something obviously wrong with the SMT-LIB input I&amp;#39;m using? Or am I misinterpreting how to use &amp;#39;concat&amp;#39;?
&lt;/p&gt;
&lt;p&gt;Thanks for your time,
Sean&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Z3 - getting started. Z3 seems to ignore my constraints</title><link>http://community.research.microsoft.com/forums/thread/5376.aspx</link><pubDate>Tue, 19 May 2009 09:07:40 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5376</guid><dc:creator>ElenaPavlova</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5376.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5376</wfw:commentRss><description>&lt;p&gt;Greetings,&lt;/p&gt;
&lt;p&gt;I was expirementing with Z3 in Visual Studio 2008 IDE.&lt;/p&gt;
&lt;p&gt;here is a simple C# code with an ensures constraint&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;public class testClass&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;	&lt;/span&gt;public int testMethod ()&lt;/p&gt;
&lt;p&gt;&lt;span&gt;	&lt;/span&gt;ensures 3&amp;gt;4;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;	&lt;/span&gt;{ return 2;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;As far as I understood, IDE Build command should try to verify and compile this code and issue warnings or errors -&lt;/p&gt;
&lt;p&gt; because the constraint never holds. Unfortunately it didn&amp;#39;t show any. I suppose Z3 was installed successfully and is working for it shows &amp;quot;reciever might be null&amp;nbsp;warnings&amp;quot; for the Bag class given in examples and articles.&lt;/p&gt;
&lt;p&gt;Where am I wrong? may be z3 was installed incorrectly? may be I try to use Z3 for things it isn&amp;#39;t intended for?&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;
&lt;p&gt;P.S. Probably this should be in the spec# forum, sorry&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Type Conversion bitvector &lt;-&gt; real and some remarks about the C api</title><link>http://community.research.microsoft.com/forums/thread/5556.aspx</link><pubDate>Tue, 09 Jun 2009 09:59:43 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5556</guid><dc:creator>Menno</dc:creator><slash:comments>6</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5556.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5556</wfw:commentRss><description>&lt;p&gt;I am currently developing an concolic (like PEX) test data input generator for Java as part of my Master&amp;#39;s project.&lt;/p&gt;
&lt;p&gt;Bitvectors belong to a different theory than reals. Hence, it is impossible to compare bitvector types&amp;nbsp;and real types directly. In programming languages it is possible to cast integer variables to float variables. What would be the best strategy to convert these types in the constraint solver?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Option 1:&lt;/p&gt;
&lt;p&gt;I could use the concrete value that is collected while running the program with concrete input. For example, if an float is casted to a integer, then we would use the result of this conversion to initialize the variable in the constraint solver. However, this approach loses the `link&amp;#39; between the integer constraints and real constraints. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Option 2:&lt;/p&gt;
&lt;p&gt;Alternatively, I could use a set of constraints to convert between bitvectors and reals.&amp;nbsp;The following&amp;nbsp;pseudo C code fragments convert between bitvectors and reals. Note that this is very similar to how integers and floats&amp;nbsp;are converted.&lt;/p&gt;
&lt;p&gt;Conversion from bitvector b to real r:&lt;/p&gt;
&lt;p&gt;int b;&lt;br /&gt;real r;&lt;br /&gt;//this loop is unrolled:&lt;br /&gt;for (int i = 0; i &amp;lt; bvsize(b); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x_int = 1 &amp;lt;&amp;lt; i; //precomputed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; real x_real = 1 &amp;lt;&amp;lt; i; //precomputed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (b &amp;amp; x_int) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r += x_real;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;Conversion from&amp;nbsp;positive real r to bitvector b:&lt;/p&gt;
&lt;p&gt;real r;&lt;br /&gt;int b;&lt;br /&gt;if (MAXVALUE(b) &amp;lt;= r) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = MAXVALUE(b);&lt;br /&gt;}&lt;br /&gt;if (r &amp;lt;= MINVALUE(b)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = MINVALUE(b);&lt;br /&gt;}&lt;br /&gt;if (MINVALUE(b) &amp;lt; r &amp;lt; MAXVALUE(b)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this loop is unrolled:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; bvsize(b); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x_int = 1 &amp;lt;&amp;lt; bvsize(b) - i; //precomputed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real x_real = 1 &amp;lt;&amp;lt; bvsize(b) - i; //precomputed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (r &amp;gt; x_real) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = b &amp;amp; x_int;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = r - x_real;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;- Would performance suffer considerably if&amp;nbsp;I use this second approach? And are there perhaps better approaches?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is Z3 sound?</title><link>http://community.research.microsoft.com/forums/thread/5534.aspx</link><pubDate>Sun, 07 Jun 2009 08:05:38 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:5534</guid><dc:creator>ElenaPavlova</dc:creator><slash:comments>4</slash:comments><comments>http://community.research.microsoft.com/forums/thread/5534.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=5534</wfw:commentRss><description>&lt;p&gt;I haven&amp;#39;t understood from the articles, sorry&lt;/p&gt;
&lt;p&gt;but is Z3 sound?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>MUC in Z3</title><link>http://community.research.microsoft.com/forums/thread/4455.aspx</link><pubDate>Fri, 06 Feb 2009 14:37:46 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:4455</guid><dc:creator>schaef</dc:creator><slash:comments>5</slash:comments><comments>http://community.research.microsoft.com/forums/thread/4455.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=4455</wfw:commentRss><description>Hi there,

currently i am working with a bunch of unsat formulas and i am wondering
if there is a way to get the minimal unsatisfiable core of a formula from z3?

greets,

martin&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is this a bug with the C API?</title><link>http://community.research.microsoft.com/forums/thread/4870.aspx</link><pubDate>Fri, 06 Mar 2009 12:30:11 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:4870</guid><dc:creator>bdclark</dc:creator><slash:comments>3</slash:comments><comments>http://community.research.microsoft.com/forums/thread/4870.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=4870</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I was experimenting with Z3 by using the C API, when I noticed that the generated model did not satisfy the supplied constraints. I have pasted the contents of a C file demonstrating the problem, along with the runtime output, below. Is there a bug somewhere, or do I not understand what Z3 does for model generation?&lt;/p&gt;
&lt;p&gt;Is it possible to generate a model which complies with the supplied constraints? If so, how should it be done?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Source Code:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;span style="font-family:monospace;"&gt;
&lt;span style="color:#a020f0;"&gt;#include &lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;lt;z3.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;main( &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;argc, &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/span&gt;* argv[] )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;//Setup Z3&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_config cfg = Z3_mk_config();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_set_param_value(cfg, &lt;span style="color:#ff00ff;"&gt;&amp;quot;MODEL&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff00ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_context ctxt = Z3_mk_context(cfg);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_del_config(cfg);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;//Create symbols and variables&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_type_ast real = Z3_mk_real_type(ctxt);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_X = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;X&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_Y = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;Y&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_a = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_b = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_c = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;c&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_d = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;d&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_t = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;t&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_symbol symbol_u = Z3_mk_string_symbol(ctxt, &lt;span style="color:#ff00ff;"&gt;&amp;quot;u&amp;quot;&lt;/span&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast X = Z3_mk_const(ctxt, symbol_X, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast Y = Z3_mk_const(ctxt, symbol_Y, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast a = Z3_mk_const(ctxt, symbol_a, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast b = Z3_mk_const(ctxt, symbol_b, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast c = Z3_mk_const(ctxt, symbol_c, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast d = Z3_mk_const(ctxt, symbol_d, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast t = Z3_mk_const(ctxt, symbol_t, real);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast u = Z3_mk_const(ctxt, symbol_u, real);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;//Convenience functions&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast add2(Z3_ast lhs, Z3_ast rhs) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_ast args[&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;] = {lhs,rhs};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_mk_add(ctxt,&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;,args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast sub2(Z3_ast lhs, Z3_ast rhs) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_ast args[&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;] = {lhs,rhs};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_mk_sub(ctxt,&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;,args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast mult2(Z3_ast lhs, Z3_ast rhs) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_ast args[&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;] = {lhs,rhs};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;Z3_mk_mul(ctxt,&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;,args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;//Create logic constraints&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_ast show = &lt;span style="color:#ff00ff;"&gt;NULL&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_eq(ctxt,add2(t,u),Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;,real));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_eq(ctxt,c,t);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_eq(ctxt,d,u);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_eq(ctxt,a,u);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_eq(ctxt,b, sub2(Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;,real),t));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_le(ctxt, add2(mult2(X,c),mult2(Y,d)), Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;10&amp;quot;&lt;/span&gt;,real) );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_ge(ctxt, add2(mult2(X,c),mult2(Y,d)), Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;5&amp;quot;&lt;/span&gt;,real) );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show = Z3_mk_le(ctxt, add2(mult2(X,a),mult2(Y,b)), Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;10&amp;quot;&lt;/span&gt;,real) );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show=Z3_mk_ge(ctxt, add2(mult2(X,a),mult2(Y,b)), Z3_mk_numeral(ctxt,&lt;span style="color:#ff00ff;"&gt;&amp;quot;5&amp;quot;&lt;/span&gt;,real) );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_assert_cnstr(ctxt,show);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_ast_to_string(ctxt,show));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;//Check and show results&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_model model;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_lbool result = Z3_check_and_get_model(ctxt,&amp;amp;model);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;Result=&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result==Z3_L_FALSE?&lt;span style="color:#ff00ff;"&gt;&amp;quot;False&amp;quot;&lt;/span&gt;: (result==Z3_L_TRUE?&lt;span style="color:#ff00ff;"&gt;&amp;quot;True&amp;quot;&lt;/span&gt;:&lt;span style="color:#ff00ff;"&gt;&amp;quot;Undefined&amp;quot;&lt;/span&gt;) );&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( !model )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;No model generated.&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;%s&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;&amp;quot;&lt;/span&gt;,Z3_model_to_string(ctxt,model));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_del_model(model);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z3_del_context(ctxt);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
Output:
&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;(= (+ t u) 1)&lt;br /&gt;(= c t)&lt;br /&gt;(= d u)&lt;br /&gt;(= a u)&lt;br /&gt;(= b (- 0 t))&lt;br /&gt;(&amp;lt;= (+ (* X c) (* Y d)) 10)&lt;br /&gt;(&amp;gt;= (+ (* X c) (* Y d)) 5)&lt;br /&gt;(&amp;lt;= (+ (* X a) (* Y b)) 10)&lt;br /&gt;(&amp;gt;= (+ (* X a) (* Y b)) 5)&lt;br /&gt;&lt;br /&gt;Result=True&lt;br /&gt;&lt;br /&gt;partitions:&lt;br /&gt;*2 {t c b Y X} -&amp;gt; 0:real&lt;br /&gt;*3 {u d a} -&amp;gt; 1:real&lt;br /&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I expected to see that the constraint &amp;quot;(&amp;gt;= (+ (* X c) (* Y d)) 5)&amp;quot;, which should be &amp;quot;(X*c)+(Y*d) &amp;gt;= 5&amp;quot;, would evaluate to be true when substituting the results from the model. From the resulting model, &amp;quot;X&amp;quot;, &amp;quot;Y&amp;quot;, and &amp;quot;c&amp;quot; are all 0, and then &amp;quot;d&amp;quot; is 1.&amp;nbsp; Through substitution, the constraint evaluates to &amp;quot;(0 * 0)+(0 * 1) &amp;gt;= 5&amp;quot;, which is false. Is this correct?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Simplify format and tuple theory</title><link>http://community.research.microsoft.com/forums/thread/4960.aspx</link><pubDate>Sun, 15 Mar 2009 20:40:06 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:4960</guid><dc:creator>Bruce M. A.</dc:creator><slash:comments>2</slash:comments><comments>http://community.research.microsoft.com/forums/thread/4960.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=4960</wfw:commentRss><description>&lt;p&gt;Is it possible to deal with tuples in Z3 with the Simplify format? I&amp;#39;ve tried what I would consider the more likely possibilities for functions, i.e. mk_tuple, tuple, etc., but nothing so far.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>using simplify input format</title><link>http://community.research.microsoft.com/forums/thread/4806.aspx</link><pubDate>Wed, 04 Mar 2009 14:58:02 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:4806</guid><dc:creator>schaef</dc:creator><slash:comments>3</slash:comments><comments>http://community.research.microsoft.com/forums/thread/4806.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=4806</wfw:commentRss><description>&lt;p&gt;i&amp;#39;ve got some problems with the simplify input format. i have a quit large let expression (e.g. LET a b) which is used in a bunch of formulas of the form (IMPLIES c (LET a b)) where c shares some variables with a.&lt;/p&gt;
&lt;p&gt;now i thought that i could push the LET expression using BG_PUSH instead of copying it each time i check one of these implications. so far was not not able to write this using the simplify format. &lt;/p&gt;
&lt;p&gt;Any hint how to do this?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Martin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>C API - Getting Started</title><link>http://community.research.microsoft.com/forums/thread/1968.aspx</link><pubDate>Thu, 05 Jun 2008 19:38:24 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:1968</guid><dc:creator>benjnorthrop</dc:creator><slash:comments>9</slash:comments><comments>http://community.research.microsoft.com/forums/thread/1968.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=1968</wfw:commentRss><description>&lt;p&gt;Hello - I apologize up-front for the newbie question.&amp;nbsp; I&amp;#39;m trying to get started using the Z3 C API, and am looking for documentation for getting the environment situated, building, linking, and executing programs which use this API.&amp;nbsp; I&amp;#39;m on a windows machine and have LCC, but also Cygwin with GCC.&amp;nbsp; Any intro information would be extremely helpful. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Thanks very much.&lt;/p&gt;&lt;p&gt;&amp;nbsp;-Ben&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How can I rewrite this in smt-lib syntax?</title><link>http://community.research.microsoft.com/forums/thread/4124.aspx</link><pubDate>Sat, 17 Jan 2009 03:39:45 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:4124</guid><dc:creator>Ewunia</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/4124.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=4124</wfw:commentRss><description>&lt;p&gt;I know Simplify and in Simplify syntax I can create recursive functions such as:&lt;/p&gt;&lt;p&gt;(BG_PUSH (EQ (factorial 1) 1))&lt;br /&gt;(BG_PUSH (FORALL (n ) (IMPLIES (&amp;gt; n 1) (EQ (factorial n) (* (factorial (- n 1)) n)))))&lt;br /&gt;(EQ (factorial 5) 120)&lt;/p&gt;&lt;p&gt;When I feed Z3 with Simplify syntax it returns Valid.&lt;/p&gt;&lt;p&gt;How can I rewrite this in SMT-LIB format?&lt;/p&gt;&lt;p&gt;Thank you &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>is it possible with Z3?</title><link>http://community.research.microsoft.com/forums/thread/3761.aspx</link><pubDate>Tue, 23 Dec 2008 18:50:44 GMT</pubDate><guid isPermaLink="false">eaca9afb-5ccf-4c08-b3f3-369c7e6f1a06:3761</guid><dc:creator>olfa</dc:creator><slash:comments>1</slash:comments><comments>http://community.research.microsoft.com/forums/thread/3761.aspx</comments><wfw:commentRss>http://community.research.microsoft.com/forums/commentrss.aspx?SectionID=74&amp;PostID=3761</wfw:commentRss><description>&lt;p&gt;Hello&amp;nbsp;Z3 community,&lt;br /&gt;I want to know if Z3 could solve a system of equations like this example:&lt;br /&gt;solve(x+Sum[A[k],k=i..N]==y+Sum[B[k],k=m..N], &lt;br /&gt;j-Length&lt;img src="http://community.research.microsoft.com/emoticons/emotion-44.gif" alt="Coffee" /&gt;==l-Length&lt;img src="http://community.research.microsoft.com/emoticons/emotion-46.gif" alt="Drinks" /&gt;, &lt;br /&gt;&amp;nbsp;z/(c&amp;nbsp;^ i)==t/(c&amp;nbsp;^ h), &lt;br /&gt;u+1==2*v-3w, &lt;/p&gt;
&lt;div&gt;v=f(f(w))) &lt;/div&gt;
&lt;div&gt;(here A and B are arrays; C&amp;nbsp;et D are lists; &lt;br /&gt;x,y,z,t,j,l,i,h,u,v,w are variables that could be of type integer or real, c is a constant and f is a function): &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Thank you very much.&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>