Abstract
Up-to techniques are used to make it easier—or feasible—to construct, for instance, proofs of bisimilarity. This text shows how many up-to techniques can be framed as size-preserving functions, using sized types to keep track of sizes.
Through a number of examples it is argued that this approach to up-to techniques is often convenient to use in practice. Some examples of functions that cannot be made size-preserving are also included, in order to illustrate the limits of the approach. On the more theoretical side a class of up-to techniques intended to capture a natural mode of use of size-preserving functions is defined. This class turns out to correspond closely to "functions below the companion", a notion recently introduced by Pous.
Supplemental Material
Available for Download
The Agda source code that the paper refers to, along with HTML generated from the source code, containing hyperlinked identifiers.
- Andreas Abel. 2012. Type-Based Termination, Inflationary Fixed-Points, and Mixed Inductive-Coinductive Types. In Proceedings 8th Workshop on Fixed Points in Computer Science. Google Scholar
Cross Ref
- Andreas Abel and Brigitte Pientka. 2016. Well-founded recursion with copatterns and sized types. Journal of Functional Programming (2016). Google Scholar
Cross Ref
- Andreas Abel, Brigitte Pientka, David Thibodeau, and Anton Setzer. 2013. Copatterns: Programming Infinite Structures by Observations. In POPL ’13, Proceedings of 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Google Scholar
Digital Library
- Andreas Abel, Andrea Vezzosi, and Theo Winterhalter. 2017. Normalization by Evaluation for Sized Dependent Types. Proceedings of the ACM on Programming Languages 1, ICFP (2017). Google Scholar
Digital Library
- The Agda Team. 2017. The Agda Wiki. (2017). Retrieved 2017-11-07 from http://wiki.portal.chalmers.se/agda/Google Scholar
- Thorsten Altenkirch, Neil Ghani, Peter Hancock, Conor McBride, and Peter Morris. 2015. Indexed containers. Journal of Functional Programming (2015). Google Scholar
Cross Ref
- Roberto M. Amadio and Solange Coupet-Grimal. 1998. Analysis of a Guard Condition in Type Theory. In Foundations of Software Science and Computation Structures, First International Conference, FoSSaCS’98. Google Scholar
Cross Ref
- S. Arun-Kumar and M. Hennessy. 1992. An efficiency preorder for processes. Acta Informatica (1992). Google Scholar
Digital Library
- Robert Atkey and Conor McBride. 2013. Productive Coprogramming with Guarded Recursion. In ICFP’13, Proceedings of the 2013 ACM SIGPLAN International Conference on Functional Programming. Google Scholar
Digital Library
- Patrick Bahr, Hans Bugge Grathwohl, and Rasmus Ejlers Møgelberg. 2017. The Clocks Are Ticking: No More Delays! Reduction Semantics for Type Theory with Guarded Recursion. In 2017 32nd Annual ACM/IEEE Symposium on Logic in Computer Science (LICS). Google Scholar
Cross Ref
- G. Barthe, M. J. Frade, E. Giménez, L. Pinto, and T. Uustalu. 2004. Type-based termination of recursive definitions. Mathematical Structures in Computer Science (2004). Google Scholar
Digital Library
- Gilles Barthe, Benjamin Grégoire, and Fernando Pastawski. 2006. CIC : Type-Based Termination of Recursive Definitions in the Calculus of Inductive Constructions. In Logic for Programming, Artificial Intelligence, and Reasoning, 13th International Conference, LPAR 2006. Google Scholar
Digital Library
- Henning Basold, Damien Pous, and Jurriaan Rot. 2017. Monoidal Company for Accessible Functors. (2017). Accepted for publication in the proceedings of the 7th Conference on Algebra and Coalgebra in Computer Science (CALCO 2017). Possible future DOI: Google Scholar
Cross Ref
- Lars Birkedal, Aleš Bizjak, Ranald Clouston, Hans Bugge Grathwohl, Bas Spitters, and Andrea Vezzosi. 2016. Guarded Cubical Type Theory: Path Equality for Guarded Recursion. In Computer Science Logic 2016, CSL 2016. Google Scholar
Cross Ref
- Aleš Bizjak, Hans Bugge Grathwohl, Ranald Clouston, Rasmus E. Møgelberg, and Lars Birkedal. 2016. Guarded Dependent Type Theory with Coinductive Types. In Foundations of Software Science and Computation Structures, 19th International Conference, FOSSACS 2016. Google Scholar
Cross Ref
- Frédéric Blanqui. 2004. A Type-Based Termination Criterion for Dependently-Typed Higher-Order Rewrite Systems. In Rewriting Techniques and Applications, 15th International Conference, RTA 2004. Google Scholar
Cross Ref
- Frédéric Blanqui. 2005. Decidability of Type-Checking in the Calculus of Algebraic Constructions with Size Annotations. In Computer Science Logic, 19th International Workshop, CSL 2005. Google Scholar
Digital Library
- Venanzio Capretta. 2005. General Recursion via Coinductive Types. Logical Methods in Computer Science (2005). Google Scholar
Cross Ref
- Kaustuv Chaudhuri, Matteo Cimini, and Dale Miller. 2015. A Lightweight Formalization of the Metatheory of BisimulationUp-To. In CPP’15, Proceedings of the 2015 ACM Conference on Certified Programs and Proofs. Google Scholar
Digital Library
- Thierry Coquand. 1994. Infinite objects in type theory. In Types for Proofs and Programs, International Workshop TYPES ’93. Google Scholar
Cross Ref
- Nils Anders Danielsson. 2012. Operational Semantics Using the Partiality Monad. In ICFP’12, Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming. Google Scholar
Digital Library
- Nils Anders Danielsson and Thorsten Altenkirch. 2010. Subtyping, Declaratively: An Exercise in Mixed Induction and Coinduction. In Mathematics of Program Construction, 10th International Conference, MPC 2010. Google Scholar
Cross Ref
- Eduardo Giménez. 1996. Un Calcul de Constructions Infinies et son Application à la Vérification de Systèmes Communicants. Ph.D. Dissertation. Ecole Normale Supérieure de Lyon.Google Scholar
- Eduardo Giménez. 1998. Structural Recursive Definitions in Type Theory. In Automata, Languages and Programming, 25th International Colloquium, ICALP’98. Google Scholar
Cross Ref
- Jean-Yves Girard. 1972. Interprétation fonctionnelle et élimination des coupures de l’arithmétique d’ordre supérieur. Thèse de Doctorat d’État. Université Paris VII.Google Scholar
- Benjamin Grégoire and Jorge Luis Sacchini. 2010. On Strong Normalization of the Calculus of Constructions with Type-Based Termination. In Logic for Programming, Artificial Intelligence, and Reasoning, 17th International Conference, LPAR-17. Google Scholar
Cross Ref
- Daniel Hirschkoff. 1997. A Full Formalisation of π -Calculus Theory in the Calculus of Constructions. In Theorem Proving in Higher Order Logics, 10th International Conference, TPHOLs ’97. Google Scholar
Cross Ref
- Furio Honsell, Marino Miculan, and Ivan Scagnetto. 2001. π -calculus in (Co)inductive-type theory. Theoretical Computer Science (2001). Google Scholar
Digital Library
- John Hughes, Lars Pareto, and Amr Sabry. 1996. Proving the Correctness of Reactive Systems Using Sized Types. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL ’96). Google Scholar
Digital Library
- Chung-Kil Hur, Georg Neis, Derek Dreyer, and Viktor Vafeiadis. 2013. The Power of Parameterization in Coinductive Proof. In POPL ’13, Proceedings of 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Google Scholar
Digital Library
- Robin Milner. 1983. Calculi for synchrony and asynchrony. Theoretical Computer Science (1983). Google Scholar
Cross Ref
- Robin Milner. 1989. Communication and Concurrency. Prentice Hall.Google Scholar
Digital Library
- Hiroshi Nakano. 2000. A Modality for Recursion. In 15th Annual IEEE Symposium on Logic in Computer Science (LICS’00). Google Scholar
Cross Ref
- Ulf Norell. 2007. Towards a practical programming language based on dependent type theory. Ph.D. Dissertation. Chalmers University of Technology and Göteborg University.Google Scholar
- Joachim Parrow and Tjark Weber. 2016. The Largest Respectful Function. Logical Methods in Computer Science (2016). Google Scholar
Cross Ref
- Damien Pous. 2016. Coinduction All the Way Up. In Proceedings of the 31st Annual ACM-IEEE Symposium on Logic in Computer Science (LICS 2016). Google Scholar
Digital Library
- Damien Pous and Jurriaan Rot. 2017. Companions, Codensity and Causality. In Foundations of Software Science and Computation Structures, 20th International Conference, FOSSACS 2017. Google Scholar
Digital Library
- Damien Pous and Davide Sangiorgi. 2011. Enhancements of the bisimulation proof method. In Advanced Topics in Bisimulation and Coinduction, Davide Sangiorgi and Jan Rutten (Eds.). Google Scholar
Cross Ref
- Jorge Luis Sacchini. 2013. Type-Based Productivity of Stream Definitions in the Calculus of Constructions. In 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS). Google Scholar
Digital Library
- Jorge Luis Sacchini. 2014. Linear Sized Types in the Calculus of Constructions. In Functional and Logic Programming, 12th International Symposium, FLOPS 2014. Google Scholar
Cross Ref
- Jorge Luis Sacchini. 2015. Well-Founded Sized Types in the Calculus of (Co)Inductive Constructions. Draft. (2015). Retrieved 2017-11-07 from http://web.archive.org/web/20160531152811/http://www.qatar.cmu.edu:80/~sacchini/well-founded/ well-founded.pdfGoogle Scholar
- Davide Sangiorgi. 1998. On the bisimulation proof method. Mathematical Structures in Computer Science (1998). Google Scholar
Digital Library
- Davide Sangiorgi. 2017. Equations, Contractions, and Unique Solutions. ACM Transactions on Computational Logic (2017). Google Scholar
Digital Library
- Davide Sangiorgi and Robin Milner. 1992. The problem of “weak bisimulation up to”. In CONCUR ’92, Third International Conference on Concurrency Theory. Google Scholar
Cross Ref
- Steven Schäfer and Gert Smolka. 2017. Tower Induction and Up-to Techniques for CCS with Fixed Points. In Relational and Algebraic Methods in Computer Science, 16th International Conference, RAMiCS 2017. Google Scholar
Cross Ref
- Edsko de Vries. 2009. Re: [Coq-Club] Adding (inductive) transitivity to weak bisimilarity not sound? (was: Need help with coinductive proof). Message to the Coq-Club mailing list. (Aug. 2009).Google Scholar
- Hongwei Xi. 2002. Dependent Types for Program Termination Verification. Higher-Order and Symbolic Computation (2002). Google Scholar
Digital Library
Index Terms
Up-to techniques using sized types
Recommendations
Checking NFA equivalence with bisimulations up to congruence
POPL '13We introduce bisimulation up to congruence as a technique for proving language equivalence of non-deterministic finite automata. Exploiting this technique, we devise an optimisation of the classical algorithm by Hopcroft and Karp. We compare our ...
Checking NFA equivalence with bisimulations up to congruence
POPL '13: Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesWe introduce bisimulation up to congruence as a technique for proving language equivalence of non-deterministic finite automata. Exploiting this technique, we devise an optimisation of the classical algorithm by Hopcroft and Karp. We compare our ...
Diacritical Companions
AbstractCoinductive reasoning in terms of bisimulations is in practice routinely supported by carefully crafted up-to techniques that can greatly simplify proofs. However, designing and proving such bisimulation enhancements sound can be challenging, ...






Comments