Automatic Non-interference Lemmas
for Parameterized Model Checking
Jesse Bingham, Intel DEG
FMCAD 2008
1
Classic CMP Approach
CMP approach [McMillan 99/01,
Chou et al. 04, Krstic 05, Lv et al 07, Li 07,
Talupur & Tuttle 08]
human writes non-interference lemmas from
counterexamples
system is iteratively strengthened with lemmas until
all lemmas and property hold
2
CMP requires human to write lemmas
Umm, me no think
possible in real
system
p0
p1
Human writes
“non-interference lemma”:
pother
i. orange blue ( p(i ))
3
What we do
our approach removes lemma-writing burden
of human’s shoulders
start with “non-interference conjecture” False
abstract strengthened system
compute abstract reachability fixpoint
iterate, with concretized fixpoint as new conjecture
our contributions
general theory based on abstract interpretation
instantiation of theory for class of parameterized
protocols using BDDs & prototype tool
4
Roadmap
General Theory
Symmetric Parameterized Protocols
Case Studies/Final Thoughts
5
Theory
concrete transition system (C,I,T)
C is the set of (concrete) states
I C are the initial states
T CC is the transition relation
Reach(C,I,T) denotes set of reachable states
p C is called an invariant if Reach(C,I,T) p
for C define
post[T]() = {y | x.(x,y) T and x }
6
Strengthening
For C, the strengthening of (C,I,T) by , is the
transition system (C, I, T( C)). We denote the
strengthening by T # .
Strengthen with
= blue states
Theorem. is an invariant of (C,I,T) if and only if is an
invariant of T # .
7
Abstraction
finite abstract domain A along with partial
order ⊑ , forming a lattice (A,⊑)
Think of ⊑ as subset ordering on represented sets
galois connection (,) defines association
between concrete states and abstract domain
: 2C A
: A 2C
and are order preserving
other technical properties
8
: Makes Abstract Posts for
Strengthened Concrete Systems (1/2)
set of concrete states
()
:AA
Abstract post
(a.k.a abstract interpretation) of post[T # ]
9
: Makes Abstract Posts for
Strengthened Concrete Systems (2/2)
A
()(a)
a
⊑
Abstract
Domain
(post[T#]((a))
“best” post
relative to (,)
Concrete
States
C
C
(a)
post[T#]((a))
10
The Method
Abstract
Domain
A
Concrete
States
C
Reach((Init),(
Reach((Init),(
k))
1))
Reach((Init),(
(k) ⊑ =
(property)
0))
…
Reach((Init),(k-1))
1
0 = False
2
…
k
11
Roadmap
General Theory
Parameterized Protocols
Case Studies/Final Thoughts
12
State variable types
let Pid denote the process IDs
four types of variables
Bool
Pid Bool
Pid
Pid Pid
e.g. global FSM state
e.g. process FSM state, control
arrays indexed by Pid
e.g. global process pointer
e.g. pre-process process pointer
13
Transition relation syntax
atoms
w
(w : Bool )
x[p]
(x : Pid Bool and quantifed var p )
y=p
(y : Pid and quantifed var p )
z[p]=q
(z : Pid Pid and quant vars p & q)
plus any of the above with priming
transition formula syntax:
(e.u.0 ) (q.1 )
where 0 and 1 are (restricted) boolean combinations
of atoms
14
Protocol Abstraction
abstract domain is symmetric sets of views
galois connection is straightfoward
similar to [Lahiri & Bryant 04]’s for universally
quantified predicate abstraction
thanks to a small model theorem & symmetry,
we can compute a best using BDDs
15
Views [Chou et al 04]
a view only includes info regarding a small number m of
processes; Pid vars take values from {0,…,m-1,other}
Bool
View (m=2)
0
Pid Bool
1
2
3
1
Bool
View (m=2)
3
1
Concrete state
Concrete state
0
Pid Bool
1
2
Pid
Pid
3
other
16
Small Model Theorem
Bool
Pid
0
1
Pid Bool
2
3
4
1
…
0
…
-abstract away
this state in BDD
if and only if
0
n (arbitrarily big)
1
2
3
4
m+L+1 (fixed & small!)
1
…
0
…
17
Putting It All Together
i
(set of views
as BDD)
(i)
i+1 = Reach((Init),(i))
-quantify away all but first
m processes
Compute BDD for
T (i)
of size m+L+1
Computed using BDD
techniques of
[Pnueli et al 01]
18
Non-best
small model theorem allows for best
can cause BDD blow-up
two orthogonal techniques allow for non-best
, which typically yields smaller BDDs
strengthen with subset of variables
also reduces small model theorem bound by 1
only strengthen “guarded commands” that depend
on abstracted state in the guards, or even fewer
19
Roadmap
General Theory
Symmetric Parameterized Protocols
Case Studies/Final Thoughts
20
Prototype Tool
built prototype tool using Intel’s forte formal
verification system [Seger et al 05]
protocols modeled in forte’s language reFLect
user specifies “ingredients”
number of concrete processes m=2
variables to constraint during strengthening
transitions to strengthen
dynamic BDD var ordering useful [Rudell 93]
21
Case Studies (1/3)
GERMAN [German 00]
“hello world” for parameterized verification
just one Pid var; no Pid Pid vars
control & data properties verified totally
automatically with “best”
GERMAN2004
more complex than GERMAN
has Pid Pid vars (network)
previously verified by [Lv et al 07], who needed
human to add history vars
we verified the control property with non-best
22
Case Studies (2/3)
FLASH [Kuskin et al 94]
“…if [a parameterized verification method] works on
FLASH, then there is a good chance that it will also
work on many real-world cache coherence
protocols.” [Chou et al 04]
first automatically verified by [Lv et al 07]
we verified the control property using non-best
23
Case Studies (3/3)
outter
loop
iterations
abstract reach iterations
24
Final Thoughts
presented a method that automatically
computers non-interference lemmas
BDDs aren’t necessarily bad for protocols
general theory
applied to symmetric protocols
related to Invisible Invariants [Pnueli et al 01]
especially parameterized model checking
original work [McMillan 99/01] used SMV/BDDs
automation: intellectually pleasing…but
probably won’t scale
25
Foil graveyard…
26
Motivating Example
…
Want to prove invariance of something like:
i, j. ( yellow ( p(i )) green( p( j )))
27
Abstract Process other
p0
p1
pother
Abstracts
behavior of
processes
{2,…,n} for
arbitrary n
( yellow( p(i)) green( p( j)))
Model Check:
i 0 ,1
j 0 ,1
28
Counterexample Analysis
Umm, me no think
possible in real
system
p0
p1
Human writes
“non-interference lemma”:
pother
i. orange blue ( p(i ))
29
Guard Strengthening
p0
pother
p1
Strengthen with:
Model Check:
i. orange blue ( p(i ))
orange blue( p(i))
i 0,1
30
Order Preservation of Abstraction
()
Abstract
Domain
A
Concrete
States
()
C
31
Order Preservation of Concretization
a
Abstract
Domain
A
a
Concrete
States
C
(a)
(a)
32
Proving Invariants with &
(a different view from in the paper
& talk)
Abstracts
Reach(I,T#i)
Abstract
Domain
A
(i)
Reach((Init),(i))
Abstracts
T#i
Concrete
States
C
i
(Reach((Init),(i)))
= i+1
Theorem. i+1 i implies i
is a (concrete) invariant
33
Proving Invariants with &
Abstracts
T#i
Abstract
Domain
Reach((Init),(
(i))
)
A
⊑
Abstracts i
(i)
Abstracts
Reach(I,T#i)
Concrete
States
C
i
Theorem. Reach((Init),(i)) ⊑ (i)
implies i is an invariant
34
Weakening with &
Abstracts
Reach(I,T#i)
Abstract
Domain
A
(i)
Reach((Init),(i))
Abstracts
T#i
Concrete
States
C
i
(Reach((Init),(i)))
= i+1
35
Abstract Post ap()
A
Concrete
States
C
a
(a)
⊑
Abstract
Domain
ap(a)
(post((a)))
post((a))
36
: Makes Abstract Posts for
Strengthened Concrete Systems
Abstract
Domain
A
Concrete
States
Abstract post image of T#
() : A A
C
37
The Method (1/3)
Abstracts
T#i
Abstract
Domain
Reach((Init),(
(i))
)
A
⊑
|
(i)
Abstracts
Reach(I,T#i)
Concrete
States
C
i
(Reach((Init),(i)))
= i+1
38
The Method
start with 0 = False; iteratively compute 1, 2,
3,… until a provable invariant is found
this is the strongest provable invariant
provable is relative to and
if we use that is “best” then is the
strongest invariant provable using
39
Protocol Abstraction
abstract domain is symmetric sets of views
galois connection is conceptually
straightforward; similar to [Lahiri & Bryant 04]
() = {View(s) | s and is a view map}
thanks to a small model theorem & symmetry,
we can compute a best …
40
Small Model “cut-off”
number of concrete
processes in view
can be done away
With in certain
circumstances
m+ L + 1
number of existentially quantified
vars in protocol transition relation
(e.u.0 ) (q.1 )
41
Views
abstract domain is sets of views [Chou et al 04], which
are assignments to protocol vars with different typing
m a small constant (typically 2)
Pidm = {0,…,m-1}
Pidother = Pidm {other}
type in protocol
Bool
type in view
Bool
Pid Bool
Pid
Pidm Bool
Pidmother
Pid Pid
Pidm Pidmother
42
Abstraction
Bool
Pid
0
Concrete state s
(with n=4)
Pid Bool
1
2
3
2
other
0
1
Set of views (s)
1
other
0
other
43
Views (2/2) Replace this slide!!!
State of the form
array[other]
is abstracted
away
Pid vars
have type
{0,1,other}
p0
p1
pother
pother
m = 2 “concrete” processes
44
Small Model Theorem
view (m = 2)
arbitrarily large n
…
above can do any
“view transition”
iff below can
hence we -abstract
these processes away
…
m+ L + 1
45
TODO…
46
© Copyright 2026 Paperzz