Certified Programs and Proofs (CPP) is an international forum on theoretical and practical topics in all areas, including computer science, mathematics, and education, that consider certification as an essential paradigm for their work. Certification here means formal, mechanized verification of some sort, preferably with production of independently checkable certificates.

The proceedings are available in the ACM DL.

Follow this link for more information about the CPP series.

CPP 2018 is co-located with POPL 2018, in Los Angeles, California. Registration and accommodation information will mostly be available on that site. CPP 2018 will be held on 8-9 January, 2018.

CPP’18 is sponsored by ACM SIGPLAN, and in cooperation with ACM SIGLOG.

CPP’18 invited speakers are generously funded in part by Galois.

  • Brigitte Pientka (McGill University, Canada), POPLMark Reloaded: Mechanizing Logical Relations Proofs
  • René Thiemann (University of Innsbruck, Austria), Efficient Certification of Complexity Proofs—Formalizing the Perron-Frobenius Theorem
Supporters
Dates
You're viewing the program in a time zone which is different from your device's time zone change time zone

Mon 8 Jan

Displayed time zone: Tijuana, Baja California change

09:00 - 10:00
Invited Talk by René ThiemannCPP at Museum A
Chair(s): June Andronick Data61,CSIRO (formerly NICTA) and UNSW
09:00
60m
Talk
Efficient Certification of Complexity Proofs: Formalizing the Perron–Frobenius Theorem (Invited Talk Paper)
CPP
Jose Divasón , Sebastiaan Joosten , Ondřej Kunčar Technische Universität München, Germany, René Thiemann University of Innsbruck, Akihisa Yamada
DOI
10:30 - 12:00
Verifying Programs and SystemsCPP at Museum A
Chair(s): Natarajan Shankar SRI International, USA
10:30
30m
Talk
Total Haskell is Reasonable Coq
CPP
Antal Spector-Zabusky , Joachim Breitner University of Pennsylvania, Christine Rizkallah University of Pennsylvania, USA, Stephanie Weirich University of Pennsylvania, USA
DOI
11:00
30m
Talk
A Formal Proof in Coq of a Control Function for the Inverted Pendulum
CPP
Damien Rouhling University of Côte d'Azur, France
DOI
11:30
30m
Talk
Completeness and Decidability of Converse PDL in the Constructive Type Theory of Coq
CPP
Christian Doczkal CNRS, France, Joachim Bard Saarland University, Germany
DOI
13:30 - 15:30
Verified ApplicationsCPP at Museum A
Chair(s): K. Rustan M. Leino Amazon
13:30
30m
Talk
Mechanising and Verifying the WebAssembly Specification
CPP
Conrad Watt University of Cambridge, UK
DOI
14:00
30m
Talk
Towards Verifying Ethereum Smart Contract Bytecode in Isabelle/HOL
CPP
Sidney Amani UNSW, Australia, Myriam Bégel ENS Paris-Saclay, France, Maksym Bortin , Mark Staples CSIRO, Australia
DOI
14:30
30m
Talk
Mechanising Blockchain Consensus
CPP
George Pîrlea University College London, Ilya Sergey University College London
DOI Pre-print
15:00
30m
Talk
Formal Microeconomic Foundations and the First Welfare Theorem
CPP
Cezary Kaliszyk University of Innsbruck, Julian Parsert University of Innsbruck, Austria
16:00 - 18:00
Proof Methods and LibrariesCPP at Museum A
Chair(s): René Thiemann University of Innsbruck
16:00
30m
Talk
Triangulating Context Lemmas
CPP
Craig McLaughlin The University of Edinburgh, James McKinna , Ian Stark The University of Edinburgh
DOI
16:30
30m
Talk
Adapting Proof Automation to Adapt Proofs
CPP
Talia Ringer University of Washington, Nathaniel Yazdani University of Washington, Seattle, John Leo Halfaya Research, Dan Grossman University of Washington
DOI
17:00
30m
Talk
A Monadic Framework for Relational Verification: Applied to Information Security, Program Equivalence, and Optimizations
CPP
Niklas Grimm Vienna University of Technology, Austria, Kenji Maillard Inria Paris and ENS Paris, Cédric Fournet Microsoft Research, Cătălin Hriţcu Inria Paris, Matteo Maffei Saarland University, Jonathan Protzenko Microsoft Research, n.n., Tahina Ramananandro Microsoft Research, n.n., Aseem Rastogi Microsoft Research, Nikhil Swamy Microsoft Research, Santiago Zanella-Béguelin Microsoft Research, n.n.
DOI
17:30
30m
Talk
Formal Proof of Polynomial-Time Complexity with Quasi-Interpretations
CPP
Hugo Férée University of Kent, UK, Samuel Hym University of Lille, France, Micaela Mayero , Jean-Yves Moyen University of Copenhagen, Denmark, David Nowak CNRS, France
DOI
18:15 - 20:15
CPP ReceptionCPP at Museum A
18:15
2h
Social Event
CPP Reception
CPP

Tue 9 Jan

Displayed time zone: Tijuana, Baja California change

09:00 - 10:00
Invited Talk by Brigitte PientkaCPP at Museum A
Chair(s): Amy Felty University of Ottawa
09:00
60m
Talk
POPLMark Reloaded: Mechanizing Logical Relations Proofs (Invited Talk)
CPP
Brigitte Pientka McGill University
DOI
10:30 - 12:00
Trusted Verification Frameworks and SystemsCPP at Museum A
Chair(s): Zhong Shao Yale University
10:30
30m
Talk
A Verified SAT Solver with Watched Literals Using Imperative HOL
CPP
Mathias Fleury MPI-INF, Jasmin Blanchette Vrije Universiteit Amsterdam, Peter Lammich Technische Universität München
DOI
11:00
30m
Talk
Œuf: Minimizing the Coq Extraction TCB
CPP
Eric Mullen University of Washington, Stuart Pernsteiner University of Washington, USA, James R. Wilcox University of Washington, Zachary Tatlock University of Washington, Seattle, Dan Grossman University of Washington
DOI
11:30
30m
Talk
Proofs in Conflict-Driven Theory Combination
CPP
Maria Paola Bonacina University of Verona, Italy, Stéphane Graham-Lengrand CNRS, France, Natarajan Shankar SRI International, USA
DOI
13:30 - 15:30
Type Theory, Set Theory, and Formalized MathematicsCPP at Museum A
Chair(s): Thorsten Altenkirch University of Nottingham
13:30
30m
Talk
Finite Sets in Homotopy Type Theory
CPP
Dan Frumin Radboud University, Herman Geuvers Radboud University Nijmegen, Netherlands, Léon Gondelman LRI, Université Paris-Sud, Niels van der Weide Radboud University Nijmegen, Netherlands
DOI
14:00
30m
Talk
Generic Derivation of Induction for Impredicative Encodings in Cedille
CPP
Denis Firsov University of Iowa, USA, Aaron Stump University of Iowa, USA
DOI
14:30
30m
Talk
Large Model Constructions for Second-Order ZF in Dependent Type Theory
CPP
Dominik Kirst Saarland University, Gert Smolka Saarland University
DOI
15:00
30m
Talk
A Constructive Formalisation of Semi-algebraic Sets and Functions
CPP
16:00 - 18:00
Formalizing Meta-TheoryCPP at Museum A
Chair(s): Brigitte Pientka McGill University
16:00
30m
Talk
HOpi in Coq
CPP
Sergueï Lenglet University of Lorraine, France, Alan Schmitt Inria
DOI
16:30
30m
Talk
A Coq Formalization of Normalization by Evaluation for Martin-Löf Type Theory
CPP
Paweł Wieczorek University of Wrocław, Dariusz Biernacki University of Wrocław
DOI
17:00
30m
Talk
A Two-Level Logic Perspective on (Simultaneous) Substitutions
CPP
Kaustuv Chaudhuri Inria, France
DOI
17:30
30m
Talk
Binder Aware Recursion over Well-Scoped de Bruijn Syntax
CPP
Jonas Kaiser , Steven Schäfer , Kathrin Stark Saarland University, Germany
DOI

Accepted Papers

Title
A Constructive Formalisation of Semi-algebraic Sets and Functions
CPP
A Coq Formalization of Normalization by Evaluation for Martin-Löf Type Theory
CPP
DOI
Adapting Proof Automation to Adapt Proofs
CPP
DOI
A Formal Proof in Coq of a Control Function for the Inverted Pendulum
CPP
DOI
A Monadic Framework for Relational Verification: Applied to Information Security, Program Equivalence, and Optimizations
CPP
DOI
A Two-Level Logic Perspective on (Simultaneous) Substitutions
CPP
DOI
A Verified SAT Solver with Watched Literals Using Imperative HOL
CPP
DOI
Binder Aware Recursion over Well-Scoped de Bruijn Syntax
CPP
DOI
Completeness and Decidability of Converse PDL in the Constructive Type Theory of Coq
CPP
DOI
CPP Reception
CPP

Efficient Certification of Complexity Proofs: Formalizing the Perron–Frobenius Theorem (Invited Talk Paper)
CPP
DOI
Finite Sets in Homotopy Type Theory
CPP
DOI
Formal Microeconomic Foundations and the First Welfare Theorem
CPP
Formal Proof of Polynomial-Time Complexity with Quasi-Interpretations
CPP
DOI
Generic Derivation of Induction for Impredicative Encodings in Cedille
CPP
DOI
HOpi in Coq
CPP
DOI
Large Model Constructions for Second-Order ZF in Dependent Type Theory
CPP
DOI
Mechanising and Verifying the WebAssembly Specification
CPP
DOI
Mechanising Blockchain Consensus
CPP
DOI Pre-print
POPLMark Reloaded: Mechanizing Logical Relations Proofs (Invited Talk)
CPP
DOI
Proofs in Conflict-Driven Theory Combination
CPP
DOI
Total Haskell is Reasonable Coq
CPP
DOI
Towards Verifying Ethereum Smart Contract Bytecode in Isabelle/HOL
CPP
DOI
Triangulating Context Lemmas
CPP
DOI
Œuf: Minimizing the Coq Extraction TCB
CPP
DOI

Call for Papers

Certified Programs and Proofs (CPP) is an international forum on theoretical and practical topics in all areas, including computer science, mathematics, and education, that consider certification as an essential paradigm for their work. Certification here means formal, mechanized verification of some sort, preferably with production of independently checkable certificates.


Important Dates (AoE, UTC-12h)

  • Abstract submission deadline: Fri 6 Oct 2017
  • Full paper submission deadline: Wed 11 Oct 2017
  • Notification: Tue 14 Nov 2017
  • Camera-ready deadline: Sun 26 Nov 2017
  • Conference dates: Mon 8 - Tue 9 Jan 2018

Topics of interest

We welcome submissions in research areas related to formal certification of programs and proofs. The following is a suggested list of topics of interests to CPP. This is a non-exhaustive list and should be read as a guideline rather than a requirement.

  • certified or certifying programming, compilation, linking, OS kernels, runtime systems, and security monitors;
  • program logics, type systems, and semantics for certified code;
  • certified decision procedures, mathematical libraries, and mathematical theorems;
  • proof assistants and proof theory;
  • new languages and tools for certified programming;
  • program analysis, program verification, and proof-carrying code;
  • certified secure protocols and transactions;
  • certificates for decision procedures, including linear algebra, polynomial systems, SAT, SMT, and unification in algebras of interest;
  • certificates for semi-decision procedures, including equality, first-order logic, and higher-order unification;
  • certificates for program termination;
  • logics for certifying concurrent and distributed programs;
  • higher-order logics, logical systems, separation logics, and logics for security;
  • teaching mathematics and computer science with proof assistants.

Submission Guidelines

Papers should be submitted in PDF format through the EasyChair submission page at

https://easychair.org/conferences/?conf=cpp2018

Submitted papers must be formatted following the ACM SIGPLAN Proceedings format using the sigplanconf format (not the acmart format) acmart format with the sigplan option, using 10 point font for the main text (not the default 9pt font), and a header for single blind review submission, e.g.,

\documentclass[sigplan,10pt,review]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false}

Submitted papers should not exceed 12 pages, including tables and figures, but excluding bibliography. Shorter papers are welcome and will be given equal consideration.

Abstracts must be submitted by October 6, 2017 (AOE). The deadline for full papers is October 11, 2017 (AOE), and authors have the option to withdraw their papers during the window between the two.

Submissions must be written in English and provide sufficient detail to allow the program committee to assess the merits of the paper. They should begin with a succinct statement of the issues, a summary of the main results, and a brief explanation of their significance and relevance to the conference, all phrased for the non-specialist. Technical and formal developments directed to the specialist should follow. References and comparisons with related work should be included. Papers not conforming to the above requirements concerning format and length may be rejected without further consideration.

Whenever appropriate, the submission should come along with a formal development, using whatever prover, e.g., Agda, Coq, Dafny, Elf, HOL, HOL-Light, Isabelle, Lean, Matita, Mizar, NQTHM, PVS, Vampire, etc. Such formal developments must be submitted together with the paper as auxiliary material, and will be taken into account during the reviewing process. Please do so by including a link to your files in the text of your paper, or by sending a zip or tar file to the PC chairs at cpp2018@easychair.org with your paper number included in the subject of your email.

The results must be unpublished and not submitted for publication elsewhere, including the proceedings of other published conferences or workshops. The PC chairs should be informed of closely related work submitted to a conference or journal in advance of submission. Original formal proofs of known results in mathematics or computer science are welcome. One author of each accepted paper is expected to present it at the conference.

For any questions about the formatting or submission of papers, please consult the PC chairs.


Invited Speakers

CPP’18 invited speakers are generously funded in part by Galois.


Program Committee

Previous CPP conferences

CPP 2017, Paris, France, January 16-17, 2017 (collocated with POPL’17)
CPP 2016, Saint Petersburg, Florida, USA, January 18-19, 2016 (collocated with POPL’16)
CPP 2015, Mumbai, India, January 13-14, 2015 (collocated with POPL’15)
CPP 2013, Melbourne, Australia, December 11-13, 2013 (collocation with APLAS’13)
CPP 2012, Kyoto, Japan, December 13-15, 2012 (collocation with APLAS’12)
CPP 2011, Kenting, Taiwan, December 7-9, 2011 (collocation with APLAS’11)


The CPP Manifesto (from 2011)

In this manifesto, we advocate for the creation of a new international conference in the area of formal methods and programming languages, called Certified Programs and Proofs (CPP). Certification here means formal, mechanized verification of some sort, preferably with the production of independently checkable certificates. CPP would target any research promoting formal development of certified software and proofs, that is:

  • The development of certified or certifying programs
  • The development of certified mathematical theories
  • The development of new languages and tools for certified programming
  • New program logics, type systems, and semantics for certified code
  • New automated or interactive tools and provers for certification
  • Results assessed by an original open source formal development
  • Original teaching material based on a proof assistant

Software today is still developed without precise specification. A developer often starts the programming task with a rather informal specification. After careful engineering, the developer delivers a program that may not fully satisfy the specification. Extensive testing and debugging may shrink the gap between the two, but there is no assurance that the program accurately follows the specification. Such inaccuracy may not always be significant, but when a developer links a large number of such modules together, these “noises” may multiply, leading to a system that nobody can understand and manage. System software built this way often contains hard-to-find “zero-day vulnerabilities” that become easy targets for Stuxnet-like attacks. CPP aims to promote the development of new languages and tools for building certified programs and for making programming precise.

Certified software consists of an executable program plus a formal proof that the software is free of bugs with respect to a particular dependability claim. With certified software, the dependability of a software system is measured by the actual formal claim that it is able to certify. Because the claim comes with a mechanized proof, the dependability can be checked independently and automatically in an extremely reliable way. The formal dependability claim can range from making almost no guarantee, to simple type safety property, or all the way to deep liveness, security, and correctness properties. It provides a great metric for comparing different techniques and making steady progress in constructing dependable software.

The conventional wisdom is that certified software will never be practical because any real software must also rely on the underlying runtime system which is too low-level and complex to be verifiable. In recent years, however, there have been many advances in the theory and engineering of mechanized proof systems applied to verification of low-level code, including proof-carrying code, certified assembly programming, local reasoning and separation logic, certified linking of heterogeneous components, certified protocols, certified garbage collectors, certified or certifying compilation, and certified OS-kernels. CPP intends to be a driving force that would facilitate the rapid development of this exciting new area, and be a natural international forum for such work.

The recent development in several areas of modern mathematics requires mathematical proofs containing enormous computation that cannot be verified by mathematicians in an entire lifetime. Such development has puzzled the mathematical community and prompted some of our colleagues in mathematics and computer science to start developing a new paradigm, formal mathematics, which requires proofs to be verified by a reliable theorem prover. As particular examples, such an effort has been made for the four-color theorem and has started for the sphere packing problem and the classification of finite groups. We believe that this emerging paradigm is the beginning of a new era. No essential existing theorem in computer science has yet been considered worth a similar effort, but it could well happen in the very near future. For example, existing results in security would often benefit from a formal development allowing us to exhibit the essential hypotheses under which the result really holds. CPP would again be a natural international forum for this kind of work, either in mathematics or in computer science, and would participate strongly in the emergence of this paradigm.

On the other hand, there is a recent trend in computer science to formally prove new results in highly technical subjects such as computational logic, at least in part. In whichever scientific area, formal proofs have three major advantages: no assumption can be missing, as is sometimes the case; the result cannot be disputed by a wrong counterexample, as sometimes happens; and more importantly, a formal development often results in a better understanding of the proof or program, and hence results in easier and better implementation. This new trend is becoming strong in computer science work, but is not recognized yet as it should be by traditional conferences. CPP would be a natural forum promoting this trend.

There are not many proof assistants around. There should be more, because progress benefits from competition. On the other hand, there is much theoretical work that could be implemented in the form of a proof assistant, but this does not really happen. One reason is that it is hard to publish a development work, especially when this requires a long-term effort as is the case for a proof assistant. It is even harder to publish work about libraries which, we all know, are fundamental for the success of a proof assistant. CPP would pay particular attention in publishing, publicizing, and promoting this kind of work.

Finally, CPP also aims to be a publication arena for innovative teaching experiences, in computer science or mathematics, using proof assistants in an essential way. These experiences could be submitted in an innovative format to be defined.