![]() |
Zachary Kincaid
I am a Computer Science Ph.D. student at the University of Toronto. My advisor is Azadeh Farzan. Email: zkincaid@cs.toronto.edu Office: Bahen Centre Rm 3232 |
my research
I am interested in program analysis and verification. My work is focused on generating invariants and proving safety properties for concurrent programs. This work is based on abstracting away the flow of control of multi-threaded programs (an essentially sequential concept) and analyzing the flow of data (an essentially a parallel concept) instead. In other words: I work on parallel proofs for parallel programs!Some of my work is implemented in the Duet program analyzer.
publications
|
Duet: static analysis for unbounded parallelism
with Azadeh Farzan.
To appear at CAV 2013.
Duet is a static analysis tool
for concurrent programs in which the number of executing threads is not
statically bounded. It has a modular architecture, which is based on
separating the invariant synthesis problem in two subtasks: (1) data
dependence analysis, which is used to construct a data flow model of
the program, and (2) interpretation of the data flow model over a
(possibly infinite) abstract domain, which generates invariants. This
separation of concerns allows researchers working on data dependence
analysis and abstract domains to combine their efforts toward solving
the challenging problem of static analysis for unbounded concurrency.
|
![]() |
|
Recursive program synthesis
with Aws Albargouthi and Sumit Gulwani.
To appear at CAV 2013.
Program synthesis from input-output examples has the power of extending
the range of computational tasks achievable by end-users who have no
programming knowledge, but can articulate their desired computations by
describing input-output behaviour. In this paper we present Escher, an
algorithm that interacts with the user via input-output examples to
synthesize recursive programs. Escher is parameterized by the
components that can be used in the program, thus providing a generic
synthesis algorithm that can be instantiated to suit different domains.
Escher adopts a novel search strategy through the space of programs
that utilizes special datastructures for inferring conditionals and
synthesizing recursive procedures.
|
![]() |
|
Inductive data flow graphs
with Azadeh Farzan and Andreas Podelski.
At POPL 2013.
We propose inductive data flow graphs, data flow graphs with
incorporated inductive assertions, as the basis of an approach to
verifying concurrent programs. An inductive data flow graph accounts
for a set of dependencies between program events, and therefore stands
as a representation for the set of executions which give rise to these
dependencies. By representing information about dependencies rather
than control flow, inductive data flow graphs can yield very succinct
proofs. Our strategy for verifying concurrent programs defers
reasoning about control to the proof checking step, a purely
combinatorial problem, thus avoiding the need to reason about data and
control simultaneously.
|
![]() |
Slides |
|
Verification of parameterized concurrent programs by modular reasoning about data and control
with Azadeh Farzan.
At POPL 2012.
We consider the problem of verifying thread-state properties of
multithreaded programs in which the number of active threads cannot be
statically bounded. Our approach is based on decomposing the task into
two modules, where one reasons about data and the other reasons about
control. The two modules are incorporated into a feedback loop, so
that the abstractions of data and control are iteratively coarsened as
the algorithm progresses (that is, they become weaker) until a fixed
point is reached.
|
![]() |
Slides |
|
Compositional bitvector analysis for concurrent programs with nested locks with Azadeh Farzan. At SAS 2010.
We propose a new technique for bitvector data flow analysis for
concurrent programs. Our algorithm works for concurrent programs that
synchronize via nested locks. We give a compositional algorithm that
first computes thread summaries and then efficiently combines them to
solve the dataflow analysis problem. We show that this algorithm
computes precise solutions (meet over all paths) to bitvector problems.
|
![]() |
Slides |
|
Duplication in DNA sequences
with Masami Ito, Lila Kari, and Shinnosuke Seki.
At DLT 2008.
The duplication and repeat-deletion operations are the basis of a
formal language theoretic model of errors that can occur during DNA
replication. During DNA replication, subsequences of a strand of DNA
may be copied several times (resulting in duplications) or skipped
(resulting in repeat-deletions). In this paper, we investigate several
properties of these operations, including closure properties of
language families in the Chomsky hierarchy, equations involving these
operations, and steps towards a characterization of regular duplication
languages, i.e. languages that are the result of the duplication
operation applied to a given set.
|
![]() |
the rest
- My DBLP entry.
- What I'm listening to.
- My Erdős number is 3.
- The background of this page is an iDFG proof of Lamport's bakery algorithm.






