Skip to main content
    • Aa
    • Aa
  • Get access
    Check if you have access via personal or institutional login
  • Cited by 5
  • Cited by
    This article has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Wang, Qian Song, Xiaoyu Gu, Ming and Sun, Jiaguang 2014. Functional Verification of High Performance Adders in COQ. Journal of Applied Mathematics, Vol. 2014, p. 1.

    O'Donnell, John T. 2013. Connecting the Dots: Computer Systems Education using a Functional Hardware Description Language. Electronic Proceedings in Theoretical Computer Science, Vol. 106, p. 20.

    Liu, Feng Tan, QingPing and Mohamed, Otmane Ait 2012. Formal proof of integer adders using all-prefix-sums operation. Science China Information Sciences, Vol. 55, Issue. 9, p. 1949.

    Chen, Gang and Liu, Feng 2010. Proofs of Correctness and Properties of Integer Adder Circuits. IEEE Transactions on Computers, Vol. 59, Issue. 1, p. 134.

    Chen, Gang 2010. Formalization of a Parameterized Parallel Adder Within the Coq Theorem Prover. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 29, Issue. 1, p. 149.


FUNCTIONAL PEARL Derivation of a logarithmic time carry lookahead addition circuit

  • DOI:
  • Published online: 01 November 2004

Using Haskell as a digital circuit description language, we transform a ripple carry adder that requires $O(n)$ time to add two $n$-bit words into a parallel carry lookahead adder that requires $O(\log n)$ time. The ripple carry adder uses a scan function to calculate carry bits, but this scan cannot be parallelized directly since it is applied to a non-associative function. Several techniques are applied in order to introduce parallelism, including partial evaluation and symbolic function representation. The derivation given here constitutes a semi-formal correctness proof, and it also brings out explicitly each of the ideas underlying the algorithm.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *