Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Jaroslav Sevcik's Homepage
[go: Go Back, main page]

Jaroslav Ševčík

Currently a researcher at the University of Cambridge (my CV)

Address

Room FS16
University of Cambridge
William Gates Building
15 JJ Thomson Avenue
Cambridge
CB3 0FD

Email: jarin.sevcik@gmail.com
Photo

Research interests

My research interests are programming languages, concurrency, relaxed memory models, programming language semantics, and proof-carrying code. Currently I am working on a certified compiler for a weak memory model.

Papers

Jaroslav Ševčík. Safe Optimisations for Shared-Memory Concurrent Programs. Accepted to PLDI 2011.
Jaroslav Ševčík, Viktor Vafeiadis, Francesco Zappa Nardelli, Suresh Jagannathan, Peter Sewell, Relaxed-Memory Concurrency and Verified Compilation. POPL 2011.
Francesco Zappa Nardelli, Peter Sewell, J. Ševčík, Susmit Sarkar, Scott Owens, Luc Maranget, Mark Batty, Jade Alglave: Relaxed Memory Models must be Rigorous, in (EC)2 09.
Jaroslav Ševčík, Program Transformations in Weak Memory Models. PhD Thesis.
Jaroslav Ševčík, David Aspinall, On Validity of Program Transformations in the Java Memory Model. ECOOP'08.
David Aspinall, Jaroslav Ševčík, Formalising Java's Data Race Free Guarantee. TPHOLs 2007. Here is the Isabelle/HOL proof script.
David Aspinall, Jaroslav Ševčík, Java Memory Model Examples: Good, Bad and Ugly. VAMP 2007 (a satellite workshop of CONCUR 2007).
Jaroslav Ševčík, Proving Resource Consumption of Low-level Programs Using Automated Theorem Provers. Bytecode 2007 (a satellite workshop at ETAPS 2007).

Projects

Weak memory models for high level languages

My goal is to design a semantics for concurrent programming languages with shared memory, such as Java, that allows many compiler optimisations while giving reasonable guarantees to programmers. In my PhD thesis I describe how to use trace-semantics to prove safety of common thread-local program transformations, such as independent statement reordering and common subexpression elimination. In my current research, I am trying to

Proof mechanisation

The memory models are notoriously tricky to get right. For example, the Java Memory Model specification effort failed twice, even though the second attempt is a lot better (see my On Validity of Program Transformations in the Java Memory Model paper). The situation is probably not much better with processor memory models, see Peter Sewell's effort to formalise the Intel x86 memory model.

Just like Peter, I believe that having a rigorous machine checked proof of correctness of the memory model is necessary to have any confidence in the model. Therefore, I am currently mechanizing the proofs in my dissertation in Isabelle/HOL.

HOL light proof replay

I have implemented a mechanism for replaying proofs in HOL light. This significantly reduces the start-up time of HOL light (by about 50% on my machine), which is very useful if checkpointing for some reason does not work for you.

The code can be downloaded here. Simply unpack to the directory where you have installed HOL light, go to the Proofcache directory and run the installcache script there. The script will record the proofs during the HOL light startup, store them to a file, and create a modified version of your hol.ml file that will use the stored proofs instead of searching for proofs. Here is what you do to use the proof cache:

> cd ~/hol_light      # or wherever your HOL light installation lives
> wget http://homepages.inf.ed.ac.uk/s0566973/proofcache.tgz
> tar -xzvf proofcache.tgz
> cd Proofcache
> ./installcache
 .... wait ....
> cd ..
> ocaml
        Objective Caml version 3.09.1
# #use "cachedhol.ml"
The cachedhol.ml version of HOL light should start about twice as fast as the normal version of HOL light. If you want even faster startup, you can set
> export HOLPROOFCACHE=CHEAT
before starting ocaml. This will cause the proof cache to bypass the HOL kernel and create all theorems in cache as axioms. This should buy you another 10-20% speedup.

Teaching

Autumn 2005, 2006, 2007    Tutor for Algorithms and Data Structures (Edinburgh)
Spring 2005    Teaching assistant for Principles of Programming Languages (Rutgers)
Fall 2004    Teaching assistant for Numerical Analysis course (Rutgers)