<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 08/14/2017 07:00 PM, <a class="moz-txt-link-abbreviated" href="mailto:j.c.vandepol@utwente.nl">j.c.vandepol@utwente.nl</a> wrote:<br>
    <blockquote type="cite"
      cite="mid:D24CA7B5-F6D3-433C-9B2B-82489B25B706@utwente.nl">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      Dear Enea,
      <div class=""><br class="">
      </div>
      <div class="">Thanks, this is going to help a lot! Where can I
        find a list of all PPL-Prolog predicates?</div>
      <div class="">I didn’t find this particular one in</div>
      <div class=""><a
href="http://bugseng.com/products/ppl/documentation//user/ppl-user-prolog-interface-1.2-html/domains_predicates.html"
          class="" moz-do-not-send="true">http://bugseng.com/products/ppl/documentation//user/ppl-user-prolog-interface-1.2-html/domains_predicates.html</a></div>
      <div class="">(well, apparently I can replace “Polyhedron” in <span
          style="background-color: rgb(255, 255, 255);" class="">ppl_Polyhedron_difference_assign
          by anything I need?)</span></div>
      <div class=""><span style="background-color: rgb(255, 255, 255);"
          class=""><br class="">
        </span></div>
    </blockquote>
    <br>
    Some domains support different sets of operators.<br>
    <br>
    If you have compiled the library from sources,<br>
    then in the build directory, under interfaces/Prolog<br>
    you should find several .hh files,<br>
    where you can see the names of the foreign predicates.<br>
    These header files are named according to the *instantiations* of
    the abstract domains<br>
    that have been enabled at configuration time (using
    --enable-instantiations).<br>
    By default (i.e., if you have enable the Prolog interface without
    chosing instantiations)<br>
    you should see something like the following<br>
    <br>
    ppl_prolog_BD_Shape_double.hh<br>
    ppl_prolog_BD_Shape_mpq_class.hh<br>
    ppl_prolog_BD_Shape_mpz_class.hh<br>
    ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh<br>
    ppl_prolog_domains.hh<br>
    ppl_prolog_Double_Box.hh<br>
    ppl_prolog_Grid.hh<br>
    ppl_prolog_Octagonal_Shape_double.hh<br>
    ppl_prolog_Octagonal_Shape_mpq_class.hh<br>
    ppl_prolog_Octagonal_Shape_mpz_class.hh<br>
    ppl_prolog_Pointset_Powerset_C_Polyhedron.hh<br>
    ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh<br>
    ppl_prolog_Polyhedron.hh<br>
    ppl_prolog_Rational_Box.hh<br>
    <br>
    Hope this is enough to put you on the right track.<br>
    <br>
    Cheers,<br>
    Enea.<br>
    <br>
    <blockquote type="cite"
      cite="mid:D24CA7B5-F6D3-433C-9B2B-82489B25B706@utwente.nl">
      <div class=""><span style="background-color: rgb(255, 255, 255);"
          class="">
        </span></div>
      <div class="">Kind regards,</div>
      <div class="">Jaco van de Pol</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <div class="">
          <div>
            <blockquote type="cite" class="">
              <div class="">On 14 Aug 2017, at 18:53, Enea Zaffanella
                <<a href="mailto:zaffanella@cs.unipr.it" class=""
                  moz-do-not-send="true">zaffanella@cs.unipr.it</a>>
                wrote:</div>
              <br class="Apple-interchange-newline">
              <div class="">
                <div bgcolor="#FFFFFF" text="#000000" class="">
                  <p class="">Hello.</p>
                  <p class="">The Pointset_Powerset domain has a
                    difference_assign operator.<br class="">
                    If I remember correctly, when instantiated to used
                    NNC_Polyhedron,<br class="">
                    the operator should be precise.</p>
                  <p class="">For instance:</p>
                  <p class="">pset1 = { A >= 0 }<br class="">
                    pset2 = { B = 0, A = 0 }<br class="">
                    pset1.difference_assign(pset2) = { A >= 0, B >
                    0 }, { A >= 0, -B > 0 }, { B = 0, A > 0 }</p>
                  <p class="">Examples of its use (in the C++ interface)
                    can be seen in</p>
                  <p class="">   tests/Powerset/<a
                      href="http://difference1.cc" class=""
                      moz-do-not-send="true">difference1.cc</a></p>
                  <p class="">where, however, it is instantiated with
                    the C_Polyhedron class.</p>
                  <p class="">As for the Prolog interface, this should
                    be the foreign predicate to call:<br class="">
                  </p>
                  <p class="">extern "C" Prolog_foreign_return_type<br
                      class="">
                     
                    ppl_Pointset_Powerset_NNC_Polyhedron_difference_assign<br
                      class="">
                      (Prolog_term_ref t_lhs, Prolog_term_ref t_rhs);<br
                      class="">
                  </p>
                  <p class="">Let us know if it works as expected.<br
                      class="">
                  </p>
                  Cheers,<br class="">
                  Enea.<br class="">
                  <br class="">
                  <br class="">
                  <div class="moz-cite-prefix">On 08/08/2017 02:39 PM, <a
                      class="moz-txt-link-abbreviated"
                      href="mailto:j.c.vandepol@utwente.nl"
                      moz-do-not-send="true">
                      j.c.vandepol@utwente.nl</a> wrote:<br class="">
                  </div>
                  <blockquote type="cite"
                    cite="mid:12810279-FC8D-4D45-A316-B8F94FF88EC5@utwente.nl"
                    class="">
                    Dear developers of PPL,
                    <div class=""><br class="">
                    </div>
                    <div class="">Is it possible to directly compute the
                      set-difference of two pointset powersets?</div>
                    <div class=""><br class="">
                    </div>
                    <div class="">In particular, I’m interested in the
                      precise complement; </div>
                    <div class="">convex difference approximations are
                      not sufficient for my case.</div>
                    <div class=""><br class="">
                    </div>
                    <div class="">Kind regards,</div>
                    <div class="">Jaco van de Pol</div>
                    <div class=""><br class="">
                    </div>
                    <div class=""><span style="orphans: 2; widows: 2;"
                        class=""><br class="">
                      </span></div>
                    <div class=""><span style="orphans: 2; widows: 2;"
                        class="">--</span>
                      <div class="">
                        <div style="letter-spacing: normal; text-align:
                          start; text-indent: 0px; text-transform: none;
                          white-space: normal; word-spacing: 0px;
                          -webkit-text-stroke-width: 0px; word-wrap:
                          break-word; -webkit-nbsp-mode: space;
                          -webkit-line-break: after-white-space;"
                          class="">
                          <div style="letter-spacing: normal;
                            text-align: start; text-indent: 0px;
                            text-transform: none; white-space: normal;
                            word-spacing: 0px;
                            -webkit-text-stroke-width: 0px; word-wrap:
                            break-word; -webkit-nbsp-mode: space;
                            -webkit-line-break: after-white-space;"
                            class="">
                            <span class="Apple-style-span"
                              style="border-collapse: separate;
                              font-variant-ligatures: normal;
                              font-variant-east-asian: normal;
                              font-variant-position: normal;
                              line-height: normal; border-spacing: 0px;">
                              <div style="word-wrap: break-word;
                                -webkit-nbsp-mode: space;
                                -webkit-line-break: after-white-space;"
                                class="">
                                <div style="font-size: 12px;" class="">Prof.
                                  Jaco van de Pol</div>
                                <div class="">University of Twente (NL)</div>
                                <div style="font-size: 12px;" class="">Formal
                                  Methods and Tools </div>
                                <div style="font-size: 12px;" class=""><a
href="http://www.cs.utwente.nl/%7Evdpol" class="" moz-do-not-send="true">http://www.cs.utwente.nl/~vdpol</a></div>
                              </div>
                            </span></div>
                        </div>
                      </div>
                      <br class="">
                    </div>
                    <br class="">
                    <fieldset class="mimeAttachmentHeader"></fieldset>
                    <br class="">
                    <pre class="" wrap="">_______________________________________________
PPL-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:PPL-devel@cs.unipr.it" moz-do-not-send="true">PPL-devel@cs.unipr.it</a>
<a class="moz-txt-link-freetext" href="http://www.cs.unipr.it/mailman/listinfo/ppl-devel" moz-do-not-send="true">http://www.cs.unipr.it/mailman/listinfo/ppl-devel</a>
</pre>
                  </blockquote>
                  <br class="">
                </div>
              </div>
            </blockquote>
          </div>
          <br class="">
          <div class="">
            <div style="color: rgb(0, 0, 0); letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; word-wrap: break-word;
              -webkit-nbsp-mode: space; -webkit-line-break:
              after-white-space;" class="">
              <div style="color: rgb(0, 0, 0); letter-spacing: normal;
                text-align: start; text-indent: 0px; text-transform:
                none; white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px; word-wrap: break-word;
                -webkit-nbsp-mode: space; -webkit-line-break:
                after-white-space;" class="">
                <span class="Apple-style-span" style="border-collapse:
                  separate; color: rgb(0, 0, 0); font-family: Helvetica;
                  font-style: normal; font-variant-ligatures: normal;
                  font-variant-caps: normal; font-variant-east-asian:
                  normal; font-variant-position: normal; font-weight:
                  normal; letter-spacing: normal; line-height: normal;
                  orphans: 2; text-indent: 0px; text-transform: none;
                  white-space: normal; widows: 2; word-spacing: 0px;
                  border-spacing: 0px;
                  -webkit-text-decorations-in-effect: none;
                  -webkit-text-stroke-width: 0px;">
                  <div style="word-wrap: break-word; -webkit-nbsp-mode:
                    space; -webkit-line-break: after-white-space;"
                    class="">
                    <div style="font-size: 12px;" class="">--</div>
                    <div style="font-size: 12px;" class="">Prof. Jaco
                      van de Pol</div>
                    <div class="">University of Twente (NL)</div>
                    <div style="font-size: 12px;" class="">Formal
                      Methods and Tools </div>
                    <div style="font-size: 12px;" class=""><a
                        href="http://www.cs.utwente.nl/%7Evdpol"
                        class="" moz-do-not-send="true">http://www.cs.utwente.nl/~vdpol</a></div>
                  </div>
                </span></div>
            </div>
          </div>
          <br class="">
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>