Low-Level Programming in Hume: An Exploration of the HW-Hume Level

  • Kevin Hammond
  • Gudmund Grov
  • Greg Michaelson
  • Andrew Ireland
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4449)


This paper describes the HW-Hume level of the novel Hume language. HW-Hume is the simplest subset of Hume that we have identified. It provides strong formal properties but posseses limited abstraction capabilities. In this paper, we introduce HW-Hume, show some simple example programs, describe an efficient software implementation, and demonstrate how important properties can be exposed as part of an integrated formally-based verification approach.


Model Check Software Implementation Safety Property Liveness Property Half Adder 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Electronic Design Interchange Format Version 2.0.0,Technical ANSI/EIA-548-1988 (1988)Google Scholar
  2. 2.
  3. 3.
  4. 4.
    Alpern, B., Schneider, F.B.: Defining liveness. Information Processing Letters 21, 181–185 (1985)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Apt, K.R., Olderog, E.-R.: Verification of Sequential and Concurrent Programs, 2nd edn. Springer, Heidelberg (1997)zbMATHGoogle Scholar
  6. 6.
    Bjesse, P., Claessen, K., Sheeran, M., Singh, S.: Lava: Hardware design in Haskell. ACM SIGPLAN Notices 34(1), 174–184 (January 1999)CrossRefGoogle Scholar
  7. 7.
    Bonenfant, A., Ferdinand, C., Hammond, K., Heckmann, R.: Worst-Case Execution Times for a Purely Functional Language. In: Horváth, Z, Zsók, V., Butterfield, A. (eds.) IFL 2006, vol. 4449, pp. 235–252. Springer, Heidelberg (2007)Google Scholar
  8. 8.
    Boussinot, F., de Simone, R.: The Esterel Language. Proceedings of the IEEE 79(9), 1293–1304 (1991)CrossRefGoogle Scholar
  9. 9.
    Butterfield, A., Woodcock, J.: prialt in Handel-C: an operational semantics. Int. J. Softw. Tools Technol. Transf. 7(3), 248–267 (2005)CrossRefGoogle Scholar
  10. 10.
    Caspi, P., Pilaud, D., Halbwachs, N., Place, J.: Lustre: a Declarative Language for Programming Synchronous Systems. In: Proc. POPL 1987 Symposium on Principles of Programming Languages, München, Germany, pp. 178–188 (January 1987)Google Scholar
  11. 11.
    Claessen, K., Pace, G.: An Embedded Language Framework for Hardware Compilation. In: Proc. Conf. on Designing Correct Circuits (DCC 2002) (2002)Google Scholar
  12. 12.
    Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press, Cambridge (1999)Google Scholar
  13. 13.
    Cohen, A., Duranton, M., Eisenbeis, C., Pagetti, C., Plateau, F., Pouzet, M.: N-Synchronous Kahn Networks: a Relaxed Model of Synchrony for Real-Time Systems. In: Proc. POPL 2006: ACM Symposium on Principles of Programming Languages, pp. 180–193. ACM Press, New York (2006)Google Scholar
  14. 14.
    Colaço, J.-L., Pagano, B., Pouzet, M.: A Conservative Extension of Synchronous Data-flow with State Machines. In: Proc. ACM International Conference on Embedded Software (EMSOFT 2005), Jersey City, New Jersey, USA (September 2005)Google Scholar
  15. 15.
    Cook, B., Podelski, A., Rybalchenko, A.: Terminator: Beyond Safety. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, Springer, Heidelberg (2006)CrossRefGoogle Scholar
  16. 16.
    Foster, J.N.: Model Checking for a Functional Hardware Description Language, BSc Dissertation, Cambridge University. PhD thesis (2002)Google Scholar
  17. 17.
    Gautier, T., Le Guernic, P., Besnard, L.: SIGNAL: A Declarative Language For Synchronous Programming of Real-Time Systems. In: Kahn, G. (ed.) Functional Programming Languages and Computer Architecture. LNCS, vol. 274, pp. 257–277. Springer, Heidelberg (1987)Google Scholar
  18. 18.
    Grov, G., Ireland, A., Michaelson, G.J., Hammond, K.: Verifying Temporal Properties in HW-Hume. Technical report, Heriot-Watt University, School of Mathematical and Computer Sciences (February 2006)Google Scholar
  19. 19.
    Grundy, J., Melham, T., O’Leary, J.: A Reflective Functional Language for Hardware Design and Theorem Proving. J. Funct. Program 16(2), 157–196 (2006)zbMATHCrossRefMathSciNetGoogle Scholar
  20. 20.
    Hammond, K.: Exploiting Purely Functional Programming to Obtain Bounded Resource Behaviour: the Hume Approach. In: Central European Summer School on Functional Programming, July 2005. Spinger-Verlag LNCS (to appear)Google Scholar
  21. 21.
    Hammond, K., Michaelson, G.: Bounded Space Programming using Finite State Machines and Recursive Functions: the Hume Approach. Submitted to ACM Transactions on Software Engineering and Methodology (TOSEM 2006) (in preparation)Google Scholar
  22. 22.
    Hammond, K., Michaelson, G.J.: Hume: a Domain-Specific Language for Real-Time Embedded Systems. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 37–56. Springer, Heidelberg (2003)Google Scholar
  23. 23.
    Hammond, K., Michaelson, G.J.: Predictable Space Behaviour in FSM-Hume. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, Springer, Heidelberg (2003)CrossRefGoogle Scholar
  24. 24.
    Havelund, K., Pressburger, T.: Model Checking JAVA Programs using JAVA PathFinder. Int. Journal on Software Tools for Technology Transfer 2(4), 366–381 (2000)zbMATHCrossRefGoogle Scholar
  25. 25.
    Hawkins, J., Abdallah, A.E.: Behavioural Synthesis of a Parallel Hardware JPEG Decoder from a Functional Specification. In: Monien, B., Feldmann, R.L. (eds.) Euro-Par 2002. LNCS, vol. 2400, pp. 615–619. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  26. 26.
    Launchbury, J., Matthews, J., Cook, B.: Microprocessor Specification in Hawk. In: Proc. International Conference on Computer Languages, pp. 90–101 (1998)Google Scholar
  27. 27.
    Jones, G., Sheeran, M.: Circuit design in Ruby. In: Staunstrup, J. (ed.) Formal Methods for VLSI Design, pp. 13–70. North-Holland, Amsterdam (1990)Google Scholar
  28. 28.
    Lamport, L.: The Temporal Logic of Actions. ACM TOPLAS 16(3), 872–923 (1994)CrossRefGoogle Scholar
  29. 29.
    Lamport, L.: Specifying Systems — The TLA+ Language and Tools for Hardware and Software Engineers. Addison-Wesley, Reading, Massachusetts (2002)Google Scholar
  30. 30.
    Lamport, L.: Real-Time Model Checking Is Really Simple. In: Borrione, D., Paul, W. (eds.) CHARME 2005. LNCS, vol. 3725, pp. 162–175. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  31. 31.
    Mycroft, A., Sharp, R.: A Statically Allocated Parallel Functional Language. Automata, Languages and Programming, pp. 37–48 (2000)Google Scholar
  32. 32.
    Mycroft, A., Sharp, R.: Hardware/Software Co-Design Using Functional Languages. In: Margaria, T., Yi, W. (eds.) ETAPS 2001 and TACAS 2001. LNCS, vol. 2031, pp. 236–251. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  33. 33.
    Earle, C.B., Arts, T., Derrick, J.: Verifying Erlang Code: a Resource Locker Case-Study. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 184–203. Springer, Heidelberg (2002)Google Scholar
  34. 34.
    Vasconcelos, P.B.: Cost Inference and Analysis for Recursive Functional Programs. PhD thesis, University of St Andrews (in preparation)Google Scholar
  35. 35.
    Vasconcelos, P.B., Hammond, K.: Inferring Costs for Recursive, Polymorphic and Higher-Order Functional Programs. In: Trinder, P., Michaelson, G.J., Peña, R. (eds.) IFL 2003. LNCS, vol. 3145, pp. 86–101. Springer, Heidelberg (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Kevin Hammond
    • 1
  • Gudmund Grov
    • 2
  • Greg Michaelson
    • 2
  • Andrew Ireland
    • 2
  1. 1.School of Computer Science, University of St Andrews, St AndrewsScotland
  2. 2.Dept. of Mathematics and Computer Science, Heriot-Watt University, EdinburghScotland

Personalised recommendations