Linear Contexts, Sharing Functors: Techniques for Symbolic Computation

  • Gérard Huet
Part of the Applied Logic Series book series (APLS, volume 28)


We present in this paper two design issues concerning fundamental representation structures for symbolic and logic computations. The first one concerns structured editing, or more generally the possibly destructive update of tree-like data-structures of inductive types. Instead of the standard implementation of mutable data structures containing references, we advocate the zipper technology, fully applicative. This may be considered a disciplined use of pointer reversal techniques. We argue that zippers, i.e. unary contexts generalizing stacks, are concrete representations of linear functions on algebraic data types. The second method is a uniform sharing functor, which is a variation on the traditional technique of hashing, but controling the indexing function on the client side rather than on the server side, which allows the fine-tuning of bucket balancing, taking into account specific statistical properties of the application data. Such techniques are of general interest for symbolic computation applications such as structure editors, proof assistants, algebraic computation systems, and computational linguistics platforms.


Linear Logic Focus Tree Proof Assistant Place Holder Ternary Tree 
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. [Aho et al., 1986]
    Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman. “Compilers - Principles, Techniques and Tools.” Addison-Wesley, 1986.Google Scholar
  2. [Bentley and Sedgewick, 1997]
    Jon L. Bentley and Robert Sedgewick. “Fast Algorithms for Sorting and Searching Strings.” Proceedings, 8th Annual ACM-SIAM Symposium on Discrete Algorithms, Jan. 1997.Google Scholar
  3. [de Bruijn, 1968]
    N.G. de Bruijn. “The mathematical language AUTOMATH, its usage and some of its extensions.” Symposium on Automatic Demonstration, IRIA, Versailles, 1968. Printed as Springer-Verlag Lecture Notes in Mathematics 125, (1970) 29–61.CrossRefGoogle Scholar
  4. [de Bruijn, 1972]
    N.G. de Bruijn. “Lambda-Calculus Notation with Nameless Dummies, a Tool for Automatic Formula Manipulation, with Application to the Church-Rosser Theorem.” Indag. Math. 34,5 (1972), 381–392.Google Scholar
  5. [Cousineau and Mauny, 1998]
    Guy Cousineau and Michel Mauny. “The Functional Approach to Programming.” Cambridge University Press, 1998.Google Scholar
  6. [Flajolet et al., 1990]
    Philippe Flajolet, Paola Sipala and Jean-Marc Steyaert. “Analytic Variations on the Common Subexpresssion Problem.” Proceedings of 17th ICALP Colloquium, Warwick (1990), LNCS 443, Springer-Verlag, pp. 220–234.Google Scholar
  7. [Hinze et al., 2002]
    R. Hinze, J. Jeuring and A. Löh. “Type-indexed data types.” In Mathematics for Program Construction, Springer-Verlag LNCS 2386 (2002).Google Scholar
  8. [Huet, 1993]
    G. Huet. “An analysis of Böhm’s theorem.” In “To C. Böhm: Essays on Lambda-Calculus and Functional Programming”, eds. M. Dezani-Ciancaglini, S. Ronchi della Rocca and M. Venturini Zilli. Also Theoretical Computer Science 121 (1993) 145–167.Google Scholar
  9. [Huet, 1997]
    Gérard Huet. “The Zipper”. J. Functional Programming 7,5 (Sept. 1997), pp. 549–554.Google Scholar
  10. [Huet, 200X]
    G. Huet. “Transducers as Lexicon Morphisms, Phonemic Segmentation by Euphony Analysis, Application to a Sanskrit Tagger.” Available as:
  11. [Huet, 2002]
    G. Huet. The Zen Computational Linguistics Toolkit. ESSLLI 2002 Lectures, Trento, Italy, Aug. 2002. Available as:!.
  12. [Huet, 2003]
    G. Huet. “Mixed Automata.” To appear, Festschrift volume for Zohar Manna’s 64th anniversary. LNCS, Springer-Verlag, 2003.Google Scholar
  13. [Joshi and Schabes, 1997]
    A. K. Joshi, and Y. Schabes. “Tree-adjoining grammars.” In A. Salomma and G. Rozenberg, Eds., Handbook of Formal Languages and Automata. Springer, Berlin (1997).Google Scholar
  14. [Lafont, 1997]
    Yves Lafont. “Interaction Combinators.” Information and Computation 137,1 (1997) pp. 69–101.Google Scholar
  15. [Leroy et al., 2002]
    Xavier Leroy et al. “Objective Caml.” See:
  16. [McBride, 2002]
    Conor McBride. “The Derivative of a Regular Type is its Type of One-Hole Contexts.” Available from:
  17. [Muller, 1997]
    Jean-Michel Muller. “Elementary Functions - Algorithms and Implementation.” Birkhäuser, 1997.Google Scholar
  18. [Rauglaudre, 2002]
    Daniel de Rauglaudre. “The Camlp4 preprocessor.” See:
  19. [Weis and Leroy, 1999]
    Pierre Weis and Xavier Leroy. “Le langage Caanl.” 2ème édition, Dunod, Paris, 1999.Google Scholar

Copyright information

© Springer Science+Business Media Dordrecht 2003

Authors and Affiliations

  • Gérard Huet

There are no affiliations available

Personalised recommendations