Abstract
The design and implementation of a correct system can benefit from employing static techniques for ensuring that the dynamic behaviour satisfies the specification. Many programming languages incorporate types for ensuring that certain operations are only applied to data of the appropriate form. A natural extension of type checking techniques is to enrich the types with annotations and effects that further describe intensional aspects of the dynamic behaviour.
Acknowledgements
We wish to thank Torben Amtoft for working with us for many years on type and effect systems; we would also like to thank the referees for their careful reading and helpful comments.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
T. Amtoft, F. Nielson, and H. R. Nielson. Type and Effect Systems: Behaviours for Concurrency. Imperial College Press, 1999.
T. Amtoft, F. Nielson, and H.R. Nielson. Type and behaviour reconstruction for higher-order concurrent programs. Journal of Functional Programming, 7(3):321–347, 1997.
T. Amtoft, F. Nielson, H.R. Nielson, and J. Ammann. Polymorphic subtyping for effect analysis: The dynamic semantics. In Analysis and Verification of Multiple-Agent Languages, volume 1192 of Lecture Notes in Computer Science, pages 172–206. Springer, 1997.
P. N. Benton. Strictness logic and polymorphic invariance. In Proc. Second International Symposium on Logical Foundations of Computer Science, volume 620 of Lecture Notes in Computer Science, pages 33–44. Springer, 1992.
P. N. Benton. Strictness properties of lazy algebraic datatypes. In Proc. WSA ‘93, volume 724 of Lecture Notes in Computer Science, pages 206–217. Springer, 1993.
L. Damas and R. Milner. Principal type-schemes for functional programs. In Proc. POPL ‘82, pages 207–212. ACM Press, 1982.
K.-F. Faxén. Optimizing lazy functional programs using flow inference. In Proc. SAS ‘95, volume 983 of Lecture Notes in Computer Science, pages 136–153. Springer, 1995.
K.-F. Faxén. Polyvariance, polymorphism, and flow analysis. In Proc. Analysis and Verification of Multiple-Agent Languages, volume 1192 of Lecture Notes in Computer Science, pages 260–278. Springer, 1997.
Y.-C. Fuh and P. Mishra. Polymorphic subtype inference: Closing the theory-practice gap. In Proc. TAPSOFT ‘89, volume 352 of Lecture Notes in Computer Science, pages 167–183. Springer, 1989.
Y.-C. Fuh and P. Mishra. Type inference with subtypes. Theoretical Computer Science, 73:155–175, 1990.
N. Heintze. Control-flow analysis and type systems. In Proc. SAS ‘95, volume 983 of Lecture Notes in Computer Science, pages 189–206. Springer, 1995.
Nevin Heintze and Jon G. Riecke. The SLam calculus: Programming with Secrecy and Integrity. In Proc. POPL ‘98, pages 365–377. ACM Press, 1998.
F. Henglein and C. Mossin. Polymorphic binding-time analysis. In Proc. ESOP ‘94, volume 788 of Lecture Notes in Computer Science, pages 287–301. Springer, 1994.
T. P. Jensen. Strictness analysis in logical form. In Proc. FPCA ‘91, volume 523 of Lecture Notes in Computer Science, pages 352–366. Springer, 1991.
T. P. Jensen. Disjunctive strictness analysis. In Proc. LICS ‘92, pages 174–185, 1992.
M. P. Jones. A theory of qualified types. In Proc. ESOP ‘92, volume 582 of Lecture Notes in Computer Science, pages 287–306. Springer, 1992.
N. D. Jones and F. Nielson. Abstract Interpretation: a Semantics-Based Tool for Program Analysis. In Handbook of Logic in Computer Science volume 4. Oxford University Press, 1995.
P. Jouvelot. Semantic Parallelization: a practical exercise in abstract interpretation. In Proc. POPL ‘87, pages 39–48, 1987.
P. Jouvelot and D. K. Gifford. Reasoning about continuations with control effects. In Proc. PLDI ‘89, ACM SIGPLAN Notices, pages 218–226. ACM Press, 1989.
P. Jouvelot and D. K. Gifford. Algebraic reconstruction of types and effects. In Proc. POPL ‘91, pages 303–310. ACM Press, 1990.
J. M. Lucassen and D. K. Gifford. Polymorphic effect analysis. In Proc. POPL ‘88, pages 47–57. ACM Press, 1988.
R. Milner. A theory of type polymorphism in programming. Journal of Computer Systems, 17:348–375, 1978.
J. Mitchell. Type inference with simple subtypes. Journal of Functional Programming, 1(3):245–285, 1991.
F. Nielson. A formal type system for comparing partial evaluators. In D. Bjørner, A. P. Ershov, and N. D. Jones, editors, Proc. Partial Evaluation and Mixed Computation, pages 349–384. North Holland, 1988.
F. Nielson. The typed λ-calculus with firsrst-class processes. In Proc. PARLE‘89, volume 366 of Lecture Notes in Computer Science, pages 355–373. Springer, 1989.
F. Nielson and H. R. Nielson. Two-Level Functional Languages, volume 34 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.
F. Nielson and H. R. Nielson. From CML to process algebras. In Proc. CONCUR‘93, volume 715 of Lecture Notes in Computer Science, pages 493–508. Springer, 1993.
F. Nielson and H. R. Nielson. Layered predicates. In Proc. REX‘92 workshop on Semantics-foundations and applications, volume 666 of Lecture Notes in Computer Science, pages 425–456. Springer, 1993.
F. Nielson and H. R. Nielson. From CML to its process algebra. Theoretical Computer Science, 155:179–219, 1996.
F. Nielson, H. R. Nielson, and C. L. Hankin. Principles of Program Analysis. Springer, 1999.
F. Nielson, H.R. Nielson, and T. Amtoft. Polymorphic subtyping for effect analysis: The algorithm. In Analysis and Verification of Multiple-Agent Languages, volume 1192 of Lecture Notes in Computer Science, pages 207–243. Springer, 1997.
H. R. Nielson, T. Amtoft, and F. Nielson. Behaviour analysis and safety conditions: a case study in CML. In Proc. FASE ‘98, number 1382 in Lecture Notes in Computer Science, pages 255–269. Springer, 1998.
H. R. Nielson and F. Nielson. Higher-Order Concurrent Programs with Finite Communication Topology. In Proc. POPL ‘94. Springer, 1994.
H. R. Nielson and F. Nielson. Communication analysis for Concurrent ML. In F. Nielson, editor, ML with Concurrency, Monographs in Computer Science, pages 185–235. Springer, 1997.
H.R. Nielson, F. Nielson, and T. Amtoft. Polymorphic subtyping for effect analysis: The static semantics. In Analysis and Verification of Multiple-Agent Languages, volume 1192 of Lecture Notes in Computer Science, pages 141–171. Springer, 1997.
G. D. Plotkin. A structural approach to operational semantics. Technical Report FN-19, DAIMI, Aarhus University, Denmark, 1981.
G. S. Smith. Polymorphic inference with overloading and subtyping. In Proc. TAP-SOFT ‘93, volume 668 of Lecture Notes in Computer Science, pages 671–685. Springer, 1993.
G. S. Smith. Polymorphic type schemes for functional programs with overloading and subtyping. Science of Computer Programming, 23:197–226, 1994.
J.-P. Talpin and P. Jouvelot. The type and effect discipline. In Proc. LICS ‘92, pages 162–173, 1992.
J.-P. Talpin and P. Jouvelot. The type and effect discipline. Information and Computation, 111(2):245–296, 1994.
Y.-M. Tang. Control-Flow Analysis by Effect Systems and Abstract Interpretation. PhD thesis, Ecole des Mines de Paris, 1994.
M. Tofte. Type inference for polymorphic references. Information and Computation, 89:1–34, 1990.
M. T ofte and L. Birkedal. A region inference algorithm. ACM TOPLAS, 20(3):1–44, 1998.
M. Tofte and J.-P. Talpin. Implementing the call-by-value lambda-calculus using a stack of regions. In Proc. POPL ‘94, pages 188–201. ACM Press, 1994.
M. Tofte and J.-P. Talpin. Region-based memory management. Information and Computation, 132:109–176, 1997.
M. Wand. Specifying the correctness of binding-time analysis. In Proc. POPL ‘93, pages 137–143, 1993.
R. Wilhelm. Global flow analysis and optimization in the MUG2 compiler generating system. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 5. Prentice Hall International, 1981.
A. K. Wright. Typing references by effect inference. In Proc. ESOP ‘92, volume 582 of Lecture Notes in Computer Science, pages 473–491. Springer, 1992.
A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115:38–94, 1994.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Nielson, F., Nielson, H.R. (1999). Type and Effect Systems. In: Olderog, ER., Steffen, B. (eds) Correct System Design. Lecture Notes in Computer Science, vol 1710. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48092-7_6
Download citation
DOI: https://doi.org/10.1007/3-540-48092-7_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66624-0
Online ISBN: 978-3-540-48092-1
eBook Packages: Springer Book Archive