Symbolic Encoding of Boolean Networks

A' = B | D

B = A | !D

C = A & D

D = !C

One attractor...

.... as a BDD

Update function BDD

f_A = B | D ...

(f_A = 1 <=> A = 0) | (f_A = 0 <=> A = 1)

"The set of states where applying f_A will change the value of A"

Applying update BDD

= ∅

"A cannot be updated in the attractor"

... but C can.

C' = A & D

=

We have a set of states that *can* perform a transition. How do we compute the actual successors?

 

 

 

 

"bit flip C"

operation

Does this add anything new to the attractor? (It shouldn't...)

=

What about parameters?

A' = B | D

B = A | !D

C = 
(K => (A & D)) & (!K => (A | D))

D = !C

There is a K in the BDD now.

Writing K everywhere becomes boring very quickly....

A' = B | D

B = A | !D

C = f(A, D)

D = !C
Now we have 4 parameters in the BDD:

​A | B | F(A, B)
---------------
1 | 1 | f[1,1]
1 | 0 | f[1,0]
0 | 1 | f[0,1]
0 | 0 | f[0,0]

(for binary functions this is pretty useless, but with more arguments, there isn't a much better option)

Update functions work exactly the same way, except they contain parameters:

C' = f(A, D)

And now for something completely different...

Symbolic Attractor Detection 

A lot of *large* sets have a very compact BDD, and a lot of *small* sets have ugly exponential BDDs.

Solving a "bigger", more general problem symbolically may be easier than computing it exactly.

Symbolic Encoding of Boolean Networks

By Samuel Pastva

Symbolic Encoding of Boolean Networks

  • 101