Skip to main content

Programming in Ωmega

  • Chapter

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5161))

Abstract

This report was originally prepared as notes for a short course on Ωmega taught at the Central-European Functional Programming School held in Cluj, Romania, between 25-30 June, 2007. It can be viewed as a tutorial on the use of the Ωmega programming language.

It introduces readers to the types as propositions notion based upon the Curry-Howard isomorphism. Such types can express precise properties of programs. The Ωmega language allows us to use a single language for the specification of designs, the definition of properties, the implementation of programs, and the production of proofs that programs adhere to their properties. Ωmega bundles all these in a coherent manner into a single unified system that appears to the user to be a programming language.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   69.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Antoy, S.: Definitional trees. In: Kirchner, H., Levi, G. (eds.) ALP 1992. LNCS, vol. 632, pp. 143–157. Springer, Heidelberg (1992)

    Chapter  Google Scholar 

  2. Augustsson, L.: Cayenne — a language with dependent types. ACM SIGPLAN Notices 34(1), 239–250 (1999)

    Article  Google Scholar 

  3. Augustsson, L.: Equality proofs in Cayenne, July 11 (2000), http://www.cs.chalmers.se/~augustss/cayenne/eqproof.ps

  4. Baars, A.I., Swierstra, S.D.: Typing dynamic typing. In: Jones, S.P. (ed.) Proceedings of the seventh ACM SIGPLAN international conference on Functional programming, pp. 157–166. ACM Press, New York (2002)

    Chapter  Google Scholar 

  5. Benaissa, Z.-E.-A., Briaud, D., Lescanne, P., Rouyer-Degli, J.: lambda-nu, A calculus of explicit substitutions which preserves strong normalisation. J. Funct. Program 6(5), 699–722 (1996)

    Article  MATH  MathSciNet  Google Scholar 

  6. Cardelli, L., Wegner, P.: On understanding types, data abstraction and polymorphism. ACM Computing Surveys 17(4), 471–522 (1985)

    Article  Google Scholar 

  7. Chen, C., Xi, H.: Combining programming with theorem proving. In: ICFP 2005 (2005), http://www.cs.bu.edu/~hwxi/

  8. Coquand, C.: Agda is a system for incrementally developing proofs and programs. Web page describing AGDA, http://www.cs.chalmers.se/~catarina/agda/

  9. Coquand, T., Dybjer, P.: Inductive definitions and type theory: an introduction. In: Thiagarajan, P.S. (ed.) FSTTCS 1994. LNCS, vol. 880, pp. 60–76. Springer, Heidelberg (1994)

    Google Scholar 

  10. Damas, L.: Type assignment in programming languages. PhD thesis, Edinburgh University CST-33-85 (1985)

    Google Scholar 

  11. Davies, R.: A refinement-type checker for Standard ML. In: Johnson, M. (ed.) AMAST 1997. LNCS, vol. 1349. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  12. Dybjer, P., Setzer, A.: A finite axiomatization of inductive-recursive definitions. In: Girard, J.-Y. (ed.) TLCA 1999. LNCS, vol. 1581, pp. 129–146. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  13. Hinze, R., Cheney, J.: A lightweight implementation of generics and dynamics. In: Chakravarty, M. (ed.) Proceedings of the ACM SIGPLAN 2002 Haskell Workshop ACM SIGPLAN, pp. 90–104 (October 2002)

    Google Scholar 

  14. Luo, Z., Pollack, R.: LEGO proof development system: User’s manual. Technical Report ECS-LFCS-92-211, LFCS, Computer Science Dept., University of Edinburgh, The King’s Buildings, Edinburgh EH9 3JZ, Updated version (May 1992)

    Google Scholar 

  15. McBride, C.: Epigram: Practical programming with dependent types. In: Notes from the 5th International Summer School on Advanced Functional Programming (August 2004), http://www.dur.ac.uk/CARG/epigram/epigram-afpnotes.pdf

  16. Milner, R.: A theory of type polymorphism in programming languages. Journal of Computer and System Science 17(3), 348–375 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  17. Nordstrom, B.: The ALF proof editor (March 20, 1996), ftp://ftp.cs.chalmers.se/pub/users/ilya/FMC/alfintro.ps.gz

  18. Pasalic, E., Linger, N.: Meta-programming with typed object-language representations. In: Karsai, G., Visser, E. (eds.) GPCE 2004. LNCS, vol. 3286, pp. 136–167. Springer, Heidelberg (2004)

    Google Scholar 

  19. Pasalic, E., Taha, W., Sheard, T.: Tagless staged interpreters for typed languages. In: Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming (ICFP 2002), Pittasburgh, PA, October 4–6, pp. 218–229. ACM Press, New York (2002)

    Google Scholar 

  20. Paulson, L.C.: Isabelle: The next 700 theorem provers. In: Odifreddi, P. (ed.) Logic and Computer Science, pp. 361–386. Academic Press, London (1990)

    Google Scholar 

  21. Jones, S.P.: Special issue: Haskell 98 language and libraries. Journal of Functional Programming 3 (January 2003)

    Google Scholar 

  22. Pfenning, F., Schürmann, C.: System description: Twelf — A meta-logical framework for deductive systems. In: Ganzinger, H. (ed.) CADE 1999. LNCS (LNAI), vol. 1632, pp. 202–206. Springer, Heidelberg (1999)

    Google Scholar 

  23. Shao, Z., Saha, B., Trifonov, V., Papaspyrou, N.: A type system for certified binaries. ACM SIGPLAN Notices 37(1), 217–232 (2002)

    Article  Google Scholar 

  24. Sheard, T.: Using MetaML: A staged programming language. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol. 1608, pp. 207–239. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  25. Sheard, T., Peyton-Jones, S.: Template meta-programming for Haskell. In: Proc. of the workshop on Haskell, pp. 1–16. ACM Press, New York (2002)

    Chapter  Google Scholar 

  26. Sheard, T.: Accomplishments and research challenges in meta-programming. In: Taha, W. (ed.) SAIG 2001. LNCS, vol. 2196, pp. 2–44. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  27. Sheard, T.: Playing with types. Technical report, Portland State University (2005), http://www.cs.pdx.edu/~sheard

  28. Sheard, T.: Putting Curry-Howard to work. In: Proceedings of the ACM SIGPLAN 2005 Haskell Workshop, pp. 74–85 (2005)

    Google Scholar 

  29. Sheard, T.: Omega users’ gude. Technical report, Portland Stage University (2005-2007), http://web.cecs.pdx.edu/~sheard/Omega/index.html

  30. Sheard, T.: Types and hardware description languages. In: Proceedings of the Hardware design and Functional Languages workshop (March 2007), http://web.cecs.pdx.edu/~sheard/

  31. Sheard, T.: Generic programming in omega. In: Notes from the Spring School on Datatype-Generic Programming. LNCS (to appear, 2006)

    Google Scholar 

  32. Stone, C.A., Harper, R.: Deciding type equivalence in a language with singleton kinds. In: Conference Record of POPL 2000: The 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Boston, Massachusetts, January 19–21, pp. 214–227 (2000)

    Google Scholar 

  33. Stump, A.: Imperative LF meta-programming. In: Logical Frameworks and Meta-Languages workshop (July 2004), http://cs-www.cs.yale.edu/homes/carsten/lfm04/

  34. Taha, W.: Tag elimination - or - type specialisation is a type-indexed effect. In: APPSEM Workshop on Subtyping & Dependent Types in Programming. Ponte de Lima Portugal (July 2000), http://www-sop.inria.fr/oasis/DTP00/Proceedings/proceedings.html

  35. Taha, W., Makholm, H., Hughes, J.: Tag elimination and jones-optimality. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol. 2053, p. 257. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  36. Taha, W., Sheard, T.: MetaML: Multi-stage programming with explicit annotations. Theoretical Computer Science 248(1-2) (2000)

    Google Scholar 

  37. The Coq Development Team. The Coq Proof Assistant Reference Manual, Version 7.4. INRIA (2003), http://pauillac.inria.fr/coq/doc/main.html

  38. Westbrook, E., Stump, A., Wehrman, I.: A language-based approach to functionally correct inperative programming. Technical report, Washington University in St. Louis (2005), http://cl.cse.wustl.edu/

  39. Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115(1), 38–94 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  40. Xi, H.: Dependent Types in Practical Programming. PhD thesis, Carnegie Mellon University (1997)

    Google Scholar 

  41. Xi, H.: Applied type systems (extended abstract). In: Berardi, S., Coppo, M., Damiani, F. (eds.) TYPES 2003. LNCS, vol. 3085, pp. 394–408. Springer, Heidelberg (2004)

    Google Scholar 

  42. Xi, H., Pfenning, F.: Eliminating array bound checking through dependent types. ACM SIGPLAN Notices 33(5), 249–257 (1998)

    Article  Google Scholar 

  43. Xi, H., Pfenning, F.: Dependent types in practical programming. In: ACM (ed.) POPL 1999. Proceedings of the 26th ACM SIGPLAN-SIGACT on Principles of programming languages, ACM SIGPLAN Notices, San Antonio, TX, January 20–22, 1999, pp. 214–227. ACM Press, New York (1999)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Sheard, T., Linger, N. (2008). Programming in Ωmega. In: Horváth, Z., Plasmeijer, R., Soós, A., Zsók, V. (eds) Central European Functional Programming School. CEFP 2007. Lecture Notes in Computer Science, vol 5161. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-88059-2_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-88059-2_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-88058-5

  • Online ISBN: 978-3-540-88059-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics