27.09.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!