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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Antoy, S.: Definitional trees. In: Kirchner, H., Levi, G. (eds.) ALP 1992. LNCS, vol. 632, pp. 143–157. Springer, Heidelberg (1992)
Augustsson, L.: Cayenne — a language with dependent types. ACM SIGPLAN Notices 34(1), 239–250 (1999)
Augustsson, L.: Equality proofs in Cayenne, July 11 (2000), http://www.cs.chalmers.se/~augustss/cayenne/eqproof.ps
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)
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)
Cardelli, L., Wegner, P.: On understanding types, data abstraction and polymorphism. ACM Computing Surveys 17(4), 471–522 (1985)
Chen, C., Xi, H.: Combining programming with theorem proving. In: ICFP 2005 (2005), http://www.cs.bu.edu/~hwxi/
Coquand, C.: Agda is a system for incrementally developing proofs and programs. Web page describing AGDA, http://www.cs.chalmers.se/~catarina/agda/
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)
Damas, L.: Type assignment in programming languages. PhD thesis, Edinburgh University CST-33-85 (1985)
Davies, R.: A refinement-type checker for Standard ML. In: Johnson, M. (ed.) AMAST 1997. LNCS, vol. 1349. Springer, Heidelberg (1997)
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)
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)
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)
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
Milner, R.: A theory of type polymorphism in programming languages. Journal of Computer and System Science 17(3), 348–375 (1978)
Nordstrom, B.: The ALF proof editor (March 20, 1996), ftp://ftp.cs.chalmers.se/pub/users/ilya/FMC/alfintro.ps.gz
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)
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)
Paulson, L.C.: Isabelle: The next 700 theorem provers. In: Odifreddi, P. (ed.) Logic and Computer Science, pp. 361–386. Academic Press, London (1990)
Jones, S.P.: Special issue: Haskell 98 language and libraries. Journal of Functional Programming 3 (January 2003)
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)
Shao, Z., Saha, B., Trifonov, V., Papaspyrou, N.: A type system for certified binaries. ACM SIGPLAN Notices 37(1), 217–232 (2002)
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)
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)
Sheard, T.: Accomplishments and research challenges in meta-programming. In: Taha, W. (ed.) SAIG 2001. LNCS, vol. 2196, pp. 2–44. Springer, Heidelberg (2001)
Sheard, T.: Playing with types. Technical report, Portland State University (2005), http://www.cs.pdx.edu/~sheard
Sheard, T.: Putting Curry-Howard to work. In: Proceedings of the ACM SIGPLAN 2005 Haskell Workshop, pp. 74–85 (2005)
Sheard, T.: Omega users’ gude. Technical report, Portland Stage University (2005-2007), http://web.cecs.pdx.edu/~sheard/Omega/index.html
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/
Sheard, T.: Generic programming in omega. In: Notes from the Spring School on Datatype-Generic Programming. LNCS (to appear, 2006)
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)
Stump, A.: Imperative LF meta-programming. In: Logical Frameworks and Meta-Languages workshop (July 2004), http://cs-www.cs.yale.edu/homes/carsten/lfm04/
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
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)
Taha, W., Sheard, T.: MetaML: Multi-stage programming with explicit annotations. Theoretical Computer Science 248(1-2) (2000)
The Coq Development Team. The Coq Proof Assistant Reference Manual, Version 7.4. INRIA (2003), http://pauillac.inria.fr/coq/doc/main.html
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/
Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115(1), 38–94 (1994)
Xi, H.: Dependent Types in Practical Programming. PhD thesis, Carnegie Mellon University (1997)
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)
Xi, H., Pfenning, F.: Eliminating array bound checking through dependent types. ACM SIGPLAN Notices 33(5), 249–257 (1998)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)