During the last decades considerable progress has been made in clarifying and strengthening the foundation of enumerative combinatorics. A number of useful theories, especially to explain algebraic techniques, have emerged. We mention, among others, Möbius inversion (Rota , Rota–Smith , Rota–Sagan ), partitional composition (Cartier–Foata , Foata [106, 112]), prefabs (Bender–Goldman ), reduced incidence algebras (Mullin–Rota , Doubilet, Rota, and Stanley , Dür ), binomial posets and exponential structures (Stanley [301, 300]), Möbius categories (Content–Lemay–Leroux , Leroux [212, 214]), umbral calculus and Hopf algebras (Rota , Joni–Rota ), Pólya theory (Pólya , Redfield , de Bruijn , Robinson ), and species of structures (Joyal ). Many authors have also underlined the importance of these methods to solve problems of enumeration, in particular, Bender–Williamson , Berge , Comtet , Flajolet , Goulden–Jackson , Graham–Knuth–Patashnik , Kerber , Harary–Palmer , Knuth , Liu , Riordan , Moon , Sagan , Stanley [304, 302], Stanton–White , van Lint–Wilson , Wehrhahn , and Wilf .
In addition, during this same period, the subject has been greatly enriched by its interaction with theoretical computer science as a source of application and motivation. The importance of combinatorics for the analysis of algorithms and the elaboration of efficient data structures is established in the fundamental book of Knuth . A good knowledge of combinatorics is now essential to the computer scientist.