Re: [TYPES] Congruence rules vs frames

2021-10-10 Thread Jules Jacobs
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] Here is a proof that values don't step: https://urldefense.com/v3/__https://pastebin.com/raw/V9Kg0cY4__;!!IBzWLUs!DI_iHIlT1E8rdhB4G9G-Wm5cLeF8loOevBXfeUhqHo4zaA1zOdGzKrCuHt_3u2trbh_ZLMAUCho$ The relevant parts are:

Re: [TYPES] Congruence rules vs frames

2021-10-10 Thread Derek Dreyer
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] @Jules: I think you're right and I was wrong. There's no need to define the eval ctxt typing *intensionally*, as I have been doing. I might as well define it *extensionally* (which is more my style anyway, but somehow

Re: [TYPES] Congruence rules vs frames

2021-10-10 Thread Derek Dreyer
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] > I managed to carry out a proof along the lines described by Derek and Jules, > but it used more ink (and more think!) than my original proof using a > congruence rule for each constructor. In this, as in much else, I

Re: [TYPES] Congruence rules vs frames

2021-10-09 Thread Jules Jacobs
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] I had previously only addressed the first part of this only to Philip Wadler, so I reproduce it here: Compcert uses evaluation contexts:

Re: [TYPES] Congruence rules vs frames

2021-10-09 Thread Gan Shen
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] Hi Philip, Here's a hacky (but simple!) way that works on my end, try defining _[_] like this ``` _[_]′ : Frame → Term → Term × Term (□· M) [ L ]′ = L , M (·□ V _) [ M ]′ = V , M _[_] : Frame → Term → Term F [ T ]

Re: [TYPES] Congruence rules vs frames

2021-10-09 Thread Derek Dreyer
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] Hi, Phil. Yes, there is a way to make the single congruence rule work. See for example the way I set things up in my Semantics course notes (see Section 1.2):

[TYPES] Congruence rules vs frames

2021-10-09 Thread Philip Wadler
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] Most mechanised formulations of reduction systems, such as those found in Software Foundations or in Programming Language Foundations in Agda, use one congruence rule for each evaluation context: ξ-·₁ : ∀ {L L′ M}