A case study in programming coinductive proofs: Howe's method

被引:3
|
作者
Momigliano, Alberto [1 ]
Pientka, Brigitte [2 ]
Thibodeau, David [2 ]
机构
[1] Univ Milan, Dipartimento Informat, Milan, Italy
[2] McGill Univ, Sch Comp Sci, Montreal, PQ, Canada
关键词
SYNTACTIC LOGICAL RELATIONS; SYSTEM; TERMINATION; FRAMEWORK;
D O I
10.1017/S0960129518000415
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Bisimulation proofs play a central role in programming languages in establishing rich properties such as contextual equivalence. They are also challenging to mechanize, since they require a combination of inductive and coinductive reasoning on open terms. In this paper, we describe mechanizing the property that similarity in the call-by-name lambda calculus is a pre-congruence using Howe's method in the Beluga formal reasoning system. The development relies on three key ingredients: (1) we give a higher order abstract syntax (HOAS) encoding of lambda terms together with their operational semantics as intrinsically typed terms, thereby avoiding not only the need to deal with binders, renaming and substitutions, but keeping all typing invariants implicit; (2) we take advantage of Beluga's support for representing open terms using built-in contexts and simultaneous substitutions: this allows us to directly state central definitions such as open simulation without resorting to the usual inductive closure operation and to encode very elegantly notoriously painful proofs such as the substitutivity of the Howe relation; (3) we exploit the possibility of reasoning by coinduction in Beluga's reasoning logic. The end result is succinct and elegant, thanks to the high-level abstractions and primitives Beluga provides. We believe that this mechanization is a significant example that illustrates Beluga's strength at mechanizing challenging (co)inductive proofs using HOAS encodings.
引用
收藏
页码:1309 / 1343
页数:35
相关论文
共 50 条
  • [31] Polyhedral Dataflow Programming: a Case Study
    Fontaine, Romain
    Gonnord, Laure
    Morel, Lionel
    2018 30TH INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING (SBAC-PAD 2018), 2018, : 171 - 179
  • [32] Programming for maintainability: A case study.
    Shanks, O
    PORTABLE SOFTWARE - 1997 ROCHESTER FORTH CONFERENCE, 1998, : 75 - 81
  • [33] A case study of the JADEL programming language
    Bergenti, Federico
    Iotti, Eleonora
    Monica, Stefania
    Poggi, Agostino
    CEUR Workshop Proceedings, 2016, 1664 : 85 - 90
  • [34] Countdown: A case study in origami programming
    Bird, R
    Mu, SC
    JOURNAL OF FUNCTIONAL PROGRAMMING, 2005, 15 : 679 - 702
  • [35] How to Frame Understanding in Mathematics: A Case Study Using Extremal Proofs
    Merlin Carl
    Marcos Cramer
    Bernhard Fisseni
    Deniz Sarikaya
    Bernhard Schröder
    Axiomathes, 2021, 31 : 649 - 676
  • [36] Minding mathematicians' discourses in investigations of their feedback on students' proofs: a case study
    Kontorovich, Igor'
    EDUCATIONAL STUDIES IN MATHEMATICS, 2021, 107 (02) : 213 - 234
  • [37] Minding mathematicians’ discourses in investigations of their feedback on students’ proofs: a case study
    Igor’ Kontorovich
    Educational Studies in Mathematics, 2021, 107 : 213 - 234
  • [38] How to Frame Understanding in Mathematics: A Case Study Using Extremal Proofs
    Carl, Merlin
    Cramer, Marcos
    Fisseni, Bernhard
    Sarikaya, Deniz
    Schroeder, Bernhard
    AXIOMATHES, 2021, 31 (05): : 649 - 676
  • [39] Hero's method:: An introduction to Mathematica programming
    Eisenberg, M
    CHALLENGING THE BOUNDARIES OF SYMBOLIC COMPUTATION, 2003, : 263 - 270
  • [40] Programming Special Collections: A Case Study of John Ringling's Personal Art Library
    Oliver, Megan
    ART DOCUMENTATION, 2016, 35 (01): : 164 - 171