Howe's method
There are many ways to define the notion of program equivalence. One of them involves the construction of (bi)simulations between programs. The idea is that two programs
Simulations are better known for their use in process calculi, where there are natural definitons of observable behaviour (e.g. sending a message). But it is no less natural to consider certain behaviours of ordinary functional programs as observable. For example, the termination of an evaluation to a
This leads to various notions of program equivalence that are based on bisimilarity, observable behaviour, etc. Unlike contextual equivalence it is surprisingly hard to argue that these program equivalences are congruences, i.e. that they preserve all the constructs of the language. For example, if
Howe's method is a technique for proving that such notions of applicative bisimilarity are in fact congruences Howe 1996.
Howe's method has been used to prove congruence properties of bimilarities for
- untyped functional languages Howe 1996, Pitts 2011
- typed higher-order languages, like PCF Pitts 1997, Gordon 1999
- languages with objects Gordon 1998
- languages with local state Jeffrey and Rathke 1999
- languages with concurrent communication
References
- A comprehensive tutorial on Howe's method can be found in
@incollection{pitts_howes_2011,
series = {Cambridge {Tracts} in {Theoretical} {Computer} {Science}},
title = {Howe's {Method} for {Higher}-{Order} {Languages}},
volume = {52},
isbn = {978-1-107-00497-9},
booktitle = {Advanced {Topics} in {Bisimulation} and {Coinduction}},
publisher = {Cambridge University Press},
author = {Pitts, A. M.},
editor = {Sangiorgi, D. and Rutten, J.},
year = {2011},
pages = {197--232}
}
- Howe's method itself was introduced by Howe in a LICS 1989 paper. A journal version appeared in 1996.
@inproceedings{howe_equality_1989,
address = {Pacific Grove, CA, USA},
title = {Equality in lazy computation systems},
doi = {10.1109/LICS.1989.39174},
booktitle = {[1989] {Proceedings}. {Fourth} {Annual} {Symposium} on {Logic} in {Computer} {Science}},
publisher = {IEEE Comput. Soc. Press},
author = {Howe, D.J.},
year = {1989},
pages = {198--203}
}
@article{howe_proving_1996,
title = {Proving {Congruence} of {Bisimulation} in {Functional} {Programming} {Languages}},
volume = {124},
issn = {08905401},
url = {https://linkinghub.elsevier.com/retrieve/pii/S0890540196900085},
doi = {10.1006/inco.1996.0008},
number = {2},
journal = {Information and Computation},
author = {Howe, Douglas J.},
year = {1996},
pages = {103--112}
}
- A use of Howe's method for proving congruence of bisimilarity in PCF with lists can be found in
@incollection{pitts_1997,
title = {Operationally-Based Theories of Program Equivalence},
isbn = {978-0-521-11846-0},
url = {https://www.cl.cam.ac.uk/~amp12/papers/opebtp/opebtp.pdf},
series = {Publications of the Newton Institute},
pages = {241--298},
booktitle = {Semantics and Logics of Computation},
publisher = {Cambridge University Press},
author = {Pitts, A. M.},
editor = {Pitts, A. M. and Dybjer, P.},
date = {1997},
}
@article{gordon_1999,
title = {Bisimilarity as a theory of functional programming},
volume = {228},
doi = {10.1016/S0304-3975(98)00353-3},
pages = {5--47},
number = {1},
journaltitle = {Theoretical Computer Science},
shortjournal = {Theoretical Computer Science},
author = {Gordon, Andrew D.},
date = {1999},
}
- A use of Howe's method for proving congruence of bisimilarity in object calculi can be found in
@incollection{gordon_operational_1998,
title = {Operational equivalences for untyped and polymorphic object calculi},
series = {Publications of the Newton Institute},
pages = {9--54},
booktitle = {Higher Order Operational Techniques in Semantics},
publisher = {Cambridge University Press},
author = {Gordon, Andrew D.},
editor = {Gordon, A. D. and Pitts, A. M.},
date = {1998},
}
- A use of Howe's method for proving congruence of bisimilarity in a language with local names can be found in
@inproceedings{jeffrey_towards_1999,
title = {Towards a theory of bisimulation for local names},
doi = {10.1109/LICS.1999.782586},
pages = {56--66},
booktitle = {Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. {PR}00158)},
publisher = {{IEEE}},
author = {Jeffrey, A. and Rathke, J.},
date = {1999},
}
- The notion of applicative bisimilarity was introduced in
@incollection{abramsky_lazy_1990,
title = {The {Lazy} {Lambda} {Calculus}},
url = {https://www.cs.ox.ac.uk/files/293/lazy.pdf},
booktitle = {Research {Topics} in {Functional} {Programming}},
publisher = {Addison Wesley},
author = {Abramsky, Samson},
year = {1990},
pages = {65--117}
}