a modern C++ library for the manipulation of Boolean functions
a modern C++ library for the manipulation of Boolean functions
a modern C++ library for the manipulation of Boolean functions
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
L is denoted as leaders(L) and its domain is denoted as dom(L). If E1, E2 ∈ L we define<br />
E1 ∨ E2 as <strong>the</strong> intersection <strong>of</strong> E1 and E2 and E1 ∧ E2 as <strong>the</strong> transitive closure <strong>of</strong> <strong>the</strong><br />
union <strong>of</strong> E1 and E2. Formally it is defined inductively, <strong>for</strong> each i ∈ N, i > 0, by:<br />
E1 ∧0 E2 def<br />
= E1 ∪ E2,<br />
E1 ∧i E2 def<br />
= (x, z) ∈ Vars 2 ∃y ∈ Vars . ∃(x, y), (y, z) ∈ (E1 ∧i−1 E2) ,<br />
E1 ∧ E2 def<br />
= <br />
(E1 ∧i E2).<br />
i∈N<br />
Finally, we define <strong>the</strong> domain <strong>of</strong> an equivalence relation L ∈ L as<br />
dom(L) def<br />
= x ∈ Vars . ∃(x, y) ∈ L .<br />
1.1.5 Projections<br />
Given a <strong>Boolean</strong> function f ∈ F and a variable x ∈ Vars, we define <strong>the</strong> <strong>Boolean</strong> function<br />
∃xf def<br />
= f[0/x] ∨ f[1/x]. (1.1)<br />
This equation is also known as Schröder’s elimination principle and is <strong>of</strong>ten exploited by <strong>the</strong><br />
algorithms that compute projections. Given a finite set <strong>of</strong> variables {v1, v2, . . . vn} ⊆ Vars<br />
we also define <strong>the</strong> <strong>Boolean</strong> function<br />
∃ {v1,v2,...vn}f def<br />
= ∃v1f ∧ ∃v2f ∧ . . . ∃vnf.<br />
We finally define <strong>the</strong> projection <strong>of</strong> a <strong>Boolean</strong> function f onto a finite set <strong>of</strong> variables X as<br />
<strong>the</strong> <strong>Boolean</strong> function<br />
f | X<br />
def<br />
= ∃{Vars\X}f.<br />
1.1.6 Positive <strong>Boolean</strong> <strong>functions</strong><br />
We define <strong>the</strong> set <strong>of</strong> positive <strong>Boolean</strong> <strong>functions</strong> Pos as <strong>the</strong> set <strong>of</strong> all <strong>Boolean</strong> <strong>functions</strong><br />
that evaluate to true in <strong>the</strong> variable assignment which assigns 1 to all variables in Vars.<br />
Definition 4. (Positive <strong>Boolean</strong> <strong>functions</strong>.) If t ∈ A is <strong>the</strong> <strong>Boolean</strong> valuation such<br />
that ∀v ∈ Vars : t(v) = 1, we define<br />
Pos def<br />
= f ∈ F f(t) = 1 <br />
Marriott and Søndergaard (see [MS93]) have found this class <strong>of</strong> <strong>Boolean</strong> <strong>functions</strong> to<br />
be a good abstract domain <strong>for</strong> <strong>the</strong> problem <strong>of</strong> groundness analysis: that is why CORAL<br />
provides some specialized algorithms <strong>for</strong> it.<br />
1.1 Fundamental concepts 3