Layered predicates

  • Flemming Nielson
  • Hanne Riis Nidson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 666)


We review the concept of logical relations and how they interact with structural induction; furthermore we give examples of their use, and of particular interest is the combination with the PER-idea (partial equivalence relations). This is then generalized to Kripke-logical relations; the major application is to show that in combination with the PER-idea this solves the problem of establishing a substitution property in a manner conducive to structural induction. Finally we introduce the concept of Kripke-layered predicates; this allows a modular definition of predicates and supports a methodology of “proofs in stages” where each stage focuses on only one aspect and thus is more manageable. All of these techniques have been tested and refined in “realistic applications” that have been documented elsewhere.


logical relations partial equivalence relations Kripke-logical relations layered predicates Kripke-layered predicates substitution properties well-structured proofs denotational semantics correctness of code generation proof principles 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    S. Hunt: PERs Generalise Projections for Strictness Analysis, report DOC 90/14, Imperial College (1990).Google Scholar
  2. [2]
    S. Hunt, D. Sands: Binding Time Analysis: A New PERspective, Proc. ACM Symposium on Partial Evaluation and Semantics-Based Program Manipulation, ACM Press (1991) 154–165.Google Scholar
  3. [3]
    R. Milner: Fully abstract models of typed λ-calculi, Theoretical Computer Science 4 (1977) 1–22.Google Scholar
  4. [4]
    J.C.Mitchell: Type Systems for Programming Languages, in: Handbook of Theoretical Computer Science, vol. B: Formal Models and Semantics, J. van Leeuwen (ed.), Elsevier (1990).Google Scholar
  5. [5]
    J.C. Mitchell, E. Moggi: Kripke-style models for typed λ-calculus, Proc. 2nd Ann. IEEE Symposium on Logic in Computer Science, IEEE Press (1987) 303–314.Google Scholar
  6. [6]
    F. Nielson: Program Transformations in a Denotational Setting, ACM Transactions on Programming Languages and Systems 7 (1985) 359–379.Google Scholar
  7. [7]
    F. Nielson: Correctness of code generation from a two-level metalanguage, Proc. ESOP 1986, Springer Lecture Notes in Computer Science 213 (1986) 30–40.Google Scholar
  8. [8]
    F. Nielson: Strictness Analysis and Denotational Abstract Interpretation, Information and Computation 76 29–92.Google Scholar
  9. [9]
    F. Nielson, H.R. Nielson: Two-Level Semantics and Code Generation, Theoretical Computer Science 56 (1988) 59–133.Google Scholar
  10. [10]
    F. Nielson, H.R. Nielson: Two-Level Functional Languages, Cambridge Tracts in Theoretical Computer Science 34, Cambridge University Press (1992).Google Scholar
  11. [11]
    G.D. Plotkin: Lambda-definability and logical relations, Edinburgh AI memo, Edinburgh University (1973).Google Scholar
  12. [12]
    G.D. Plotkin: Lambda-definability in the Pull Type Hierarchy, in: To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism, J.P. Seldin and J.R. Hindley (eds.), Academic Press (1980).Google Scholar
  13. [13]
    J.C. Reynolds: On the relation between direct and continuation semantics, Proc. 2nd ICALP, Springer Lecture Notes in Computer Science 14 (1974).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Flemming Nielson
    • 1
  • Hanne Riis Nidson
    • 1
  1. 1.Computer Science DepartmentAarhus UniversityAarhus CDenmark

Personalised recommendations