<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Domains (libabsolute.Libabsolute.Domains)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script><link rel="stylesheet" href="../../../odoc.support/katex.min.css"/><script src="../../../odoc.support/katex.min.js"></script><script>
//<![CDATA[

          document.addEventListener("DOMContentLoaded", function () {
            var elements = Array.from(document.getElementsByClassName("odoc-katex-math"));
            for (var i = 0; i < elements.length; i++) {
              var el = elements[i];
              var content = el.textContent;
              var new_el = document.createElement("span");
              new_el.setAttribute("class", "odoc-katex-math-rendered");
              var display = el.classList.contains("display");
              katex.render(content, new_el, { throwOnError: false, displayMode: display });
              el.replaceWith(new_el);
            }
          });
        
//]]>
</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> â€“ <a href="../../index.html">libabsolute</a> &#x00BB; <a href="../index.html">Libabsolute</a> &#x00BB; Domains</nav><header class="odoc-preamble"><h1>Module <code><span>Libabsolute.Domains</span></code></h1><p>This module handle the domain environment, already equipped with some basic domains. You can add your own using the <code>register_*</code> functions, and combine them with the already defined ones.</p></header><nav class="odoc-toc"><ul><li><a href="#domain-environment-management">Domain environment management</a></li><li><a href="#predefined-abstract-domains">Predefined Abstract Domains</a><ul><li><a href="#numeric-domains">Numeric domains</a></li><li><a href="#boolean-domains">Boolean domains</a></li><li><a href="#combinators">Combinators</a></li></ul></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-B"><a href="#module-type-B" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-B/index.html">B</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Type of generic functors that lift a numeric domain to a boolean one</p></div></div><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-D1"><a href="#module-type-D1" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-D1/index.html">D1</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Type of domain combinator of arity 1 (e.g powerset)</p></div></div><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-D2"><a href="#module-type-D2" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-D2/index.html">D2</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Type of domain combinator of arity 2 (e.g products)</p></div></div><h2 id="domain-environment-management"><a href="#domain-environment-management" class="anchor"></a>Domain environment management</h2><div class="odoc-spec"><div class="spec value anchored" id="val-get_all"><a href="#val-get_all" class="anchor"></a><code><span><span class="keyword">val</span> get_all : <span>unit <span class="arrow">&#45;&gt;</span></span> <span>string list</span></span></code></div><div class="spec-doc"><p>collect the list of all registered domain names</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-register_numeric"><a href="#val-register_numeric" class="anchor"></a><code><span><span class="keyword">val</span> register_numeric : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="keyword">module</span> <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>registers a numeric domain into the list of available abstract domains</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-register_boolean"><a href="#val-register_boolean" class="anchor"></a><code><span><span class="keyword">val</span> register_boolean : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="keyword">module</span> <a href="module-type-B/index.html">B</a>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>registers a boolean domain into the list of available abstract domains</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-register_1"><a href="#val-register_1" class="anchor"></a><code><span><span class="keyword">val</span> register_1 : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="keyword">module</span> <a href="module-type-D1/index.html">D1</a>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>registers a domain combinator into the list of combinators of arity 1</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-register_2"><a href="#val-register_2" class="anchor"></a><code><span><span class="keyword">val</span> register_2 : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="keyword">module</span> <a href="module-type-D2/index.html">D2</a>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>registers a domain combinator into the list of combinators of arity 2</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-parse"><a href="#val-parse" class="anchor"></a><code><span><span class="keyword">val</span> parse : <span>string <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <span>(<span class="keyword">module</span> <a href="../Signature/module-type-Domain/index.html">Signature.Domain</a>)</span></span></code></div><div class="spec-doc"><p>builds the abstract domain corresponding to the name of the numeric representaion and boolean representation given in parameter. Domain application follows the syntax : <code>&quot;combinator(domain1,domain2)&quot;</code> where <code>combinator</code> has to be registered with the <code>register_2</code> function (or be one of the predefined comibnator), and both <code>domain1</code> and <code>domain2</code> has to be registered. Useful to build a domain from a command line description</p></div></div><h2 id="predefined-abstract-domains"><a href="#predefined-abstract-domains" class="anchor"></a>Predefined Abstract Domains</h2><h3 id="numeric-domains"><a href="#numeric-domains" class="anchor"></a>Numeric domains</h3><div class="odoc-spec"><div class="spec module anchored" id="module-BoxF"><a href="#module-BoxF" class="anchor"></a><code><span><span class="keyword">module</span> <a href="BoxF/index.html">BoxF</a></span><span> : <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a></span></code></div><div class="spec-doc"><p>Boxes with floatting point included bounds</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-BoxS"><a href="#module-BoxS" class="anchor"></a><code><span><span class="keyword">module</span> <a href="BoxS/index.html">BoxS</a></span><span> : <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a></span></code></div><div class="spec-doc"><p>Boxes with floatting point included or excluded bounds</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-ApronBox"><a href="#module-ApronBox" class="anchor"></a><code><span><span class="keyword">module</span> <a href="ApronBox/index.html">ApronBox</a></span><span> : <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a></span></code></div><div class="spec-doc"><p>Apron Boxes</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Poly"><a href="#module-Poly" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Poly/index.html">Poly</a></span><span> : <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a></span></code></div><div class="spec-doc"><p>Apron Polyhedra</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Oct"><a href="#module-Oct" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Oct/index.html">Oct</a></span><span> : <a href="../Signature/module-type-Numeric/index.html">Signature.Numeric</a></span></code></div><div class="spec-doc"><p>Apron Octagons</p></div></div><h3 id="boolean-domains"><a href="#boolean-domains" class="anchor"></a>Boolean domains</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Boolean"><a href="#module-Boolean" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Boolean/index.html">Boolean</a></span><span> : <a href="module-type-B/index.html">B</a></span></code></div><div class="spec-doc"><p>Lfts a numerical domain to a boolean one</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Utree"><a href="#module-Utree" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Utree/index.html">Utree</a></span><span> : <a href="module-type-B/index.html">B</a></span></code></div><div class="spec-doc"><p>Disjunctive form with fast-precomputation for meets</p></div></div><h3 id="combinators"><a href="#combinators" class="anchor"></a>Combinators</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Product"><a href="#module-Product" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Product/index.html">Product</a></span><span> : <a href="module-type-D2/index.html">D2</a></span></code></div><div class="spec-doc"><p>Specialized Reduced Product. Corresponds to the option <code>-d product (a,b)</code> of AbSolute. if a constraint can be filtered exactly by the domain <code>b</code>, it is affected to it, otherwise it is affected to <code>b</code>.</p></div></div></div></body></html>
