Circular Coinduction in Coq Using Bisimulation-Up-To Techniques

  • Jörg Endrullis
  • Dimitri Hendriks
  • Martin Bodin
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7998)


We investigate methods for proving equality of infinite objects using circular coinduction, a combination of coinduction with term rewriting, in the Coq proof assistant. In order to ensure productivity, Coq requires the corecursive construction of infinite objects to be guarded. However, guardedness forms a severe confinement for defining infinite objects, and this includes coinductive proof terms. In particular, circular coinduction is troublesome in Coq, since rewriting usually obstructs guardedness. Typically, applications of transitivity are in between the guard and the coinduction hypothesis. Other problems concern the use of lemmas, and rewriting under causal contexts. We show that the method of bisimulation-up-to allows for an elegant rendering of circular coinduction, and we use this to overcome the troubles with guardedness.


Induction Hypothesis Recursive Call Proof Tree Proof Term Nonempty Word 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abel, A.: Termination and Productivity Checking with Continuous Types. In: Hofmann, M.O. (ed.) TLCA 2003. LNCS, vol. 2701, pp. 1–15. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  2. 2.
    The Agda team. The Agda Wiki (2011),
  3. 3.
    Allouche, J.-P., Shallit, J.: Automatic Sequences: Theory, Applications, Generalizations. Cambridge University Press, New York (2003)CrossRefGoogle Scholar
  4. 4.
    The Coq development team. The Coq Proof Assistant Reference Manual. LogiCal Project, version 8.3 (2012),
  5. 5.
    Coquand, T.: Infinite Objects in Type Theory. In: Barendregt, H., Nipkow, T. (eds.) TYPES 1993. LNCS, vol. 806, pp. 62–78. Springer, Heidelberg (1994)CrossRefGoogle Scholar
  6. 6.
    Danielsson, N.A.: Beating the Productivity Checker Using Embedded Languages. In: Proc. Workshop on Partiality and Recursion in Interactive Theorem Provers (PAR 2010). EPTCS, vol. 43, pp. 29–48 (2010)Google Scholar
  7. 7.
    Endrullis, J., Grabmayer, C., Hendriks, D.: Data-Oblivious Stream Productivity. In: Cervesato, I., Veith, H., Voronkov, A. (eds.) LPAR 2008. LNCS (LNAI), vol. 5330, pp. 79–96. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  8. 8.
    Endrullis, J., Grabmayer, C., Hendriks, D., Isihara, A., Klop, J.W.: Productivity of Stream Definitions. Theoretical Computer Science 411 (2010)Google Scholar
  9. 9.
    Endrullis, J., Hendriks, D.: Lazy Productivity via Termination. Theoretical Computer Science 412(28), 3203–3225 (2011)MathSciNetzbMATHCrossRefGoogle Scholar
  10. 10.
    Endrullis, J., Hendriks, D., Bodin, M.: Coq Formalization for Circular Coinduction (2012),
  11. 11.
    Giménez, E.: Codifying Guarded Definitions with Recursive Schemes. In: Barendregt, H., Nipkow, T. (eds.) TYPES 1993. LNCS, vol. 806, pp. 39–59. Springer, Heidelberg (1994)Google Scholar
  12. 12.
    Goguen, J., Lin, K., Roşu, G.: Circular Coinductive Rewriting. In: Proc. of Automated Software Engineering, pp. 123–131. IEEE (2000)Google Scholar
  13. 13.
    Hughes, J., Pareto, L., Sabry, A.: Proving the Correctness of Reactive Systems Using Sized Types. In: Symposium on Principles of Programming Languages (POPL 1996), pp. 410–423 (1996)Google Scholar
  14. 14.
    Hur, C.-K., Neis, G., Dreyer, D., Vafeiadis, V.: The Power of Parameterization in Coinductive Proof. In: Proc. Symp. on Principles of Programming Languages (POPL 2013), pp. 193–206. ACM (2013)Google Scholar
  15. 15.
    Lucanu, D., Roşu, G.: Circular Coinduction with Special Contexts. In: Breitman, K., Cavalcanti, A. (eds.) ICFEM 2009. LNCS, vol. 5885, pp. 639–659. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  16. 16.
    Milner, R.: Communication and Concurrency. Prentice-Hall International Series in Computer Science. Prentice-Hall (1989)Google Scholar
  17. 17.
    Post, E.L.: Formal Reductions of the General Combinatorial Decision Problem. American Journal of Mathematics (65), 197–215 (1943)Google Scholar
  18. 18.
    Pous, D., Sangiorgi, D.: Enhancements of the Coinductive Proof Method. In: Sangiorgi, D., Rutten, J.J.M.M. (eds.) Advanced Topics in Bisimulation and Coinduction. Cambridge Tracts in Theoretical Computer Science, vol. 52, ch. 6, Cambridge University Press, Cambridge (2011)Google Scholar
  19. 19.
    Roşu, G., Lucanu, D.: Circular Coinduction: A Proof Theoretical Foundation. In: Kurz, A., Lenisa, M., Tarlecki, A. (eds.) CALCO 2009. LNCS, vol. 5728, pp. 127–144. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  20. 20.
    Severi, P., de Vries, F.-J.: Pure Type Systems with Corecursion on Streams: From Finite to Infinitary Normalisation. In: Proc. Int. Conf. on Functional Programming (ICFP 2012), pp. 141–152. ACM (2012)Google Scholar
  21. 21.
    Zantema, H., Endrullis, J.: Proving Equality of Streams Automatically. In: Proc. Conf. on Rewriting Techniques and Applications (RTA 2011). LIPIcs, vol. 10, pp. 393–408. Schloss Dagstuhl - Leibniz-Zentrum für Informatik (2011)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Jörg Endrullis
    • 1
  • Dimitri Hendriks
    • 1
  • Martin Bodin
    • 2
  1. 1.Department of Computer ScienceVU University AmsterdamThe Netherlands
  2. 2.INRIA Rennes & ENS LyonFrance

Personalised recommendations