Efficient implementation of lattice operations

Lattice operations such as greatest lower bound (GLB), least upper bound (LUB), and relative complementation (BUTNOT) are becoming more and more important in programming languages supporting object inheritance. We present a general technique for the efficient implementation of such operations based on an encoding method. The effect of the encoding is to plunge the given ordering into a boolean lattice of binary words, leading to an almost constant time complexity of the lattice operations. A first method is described based on a transitive closure approach. Then a more space-efficient method minimizing code-word length is described. Finally a powerful grouping technique called modulation is presented, which drastically reduces code space while keeping all three lattice operations highly efficient. This technique takes into account idiosyncrasies of the topology of the poset being encoded that are quite likely to occur in practice. All methods are formally justified. We see this work as an original contribution towards using semantic (vz., in this case, taxonomic) information in the engineering pragmatics of storage and retrieval of (vz., partially or quasi-ordered) information.

[1]  D. S. Parker Partial Order Programming. , 1989 .

[2]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

[3]  Hassan Aït-Kaci,et al.  LOGIN: A Logic Programming Language with Built-In Inheritance , 1986, J. Log. Program..

[4]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[5]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[6]  Christoph Walther A Mechanical Solution of Schubert's Steamroller by Many-Sorted Resolution , 1984, AAAI.

[7]  H. Aït-Kaci A lattice theoretic approach to computation based on a calculus of partially ordered type structures (property inheritance, semantic nets, graph unification) , 1984 .

[8]  Renzo Orsini,et al.  The Type System of Galileo , 1988, Data Types and Persistence , Informal Proceedings.

[9]  Daniel G. Bobrow,et al.  CommonLoops: merging Lisp and object-oriented programming , 1986, OOPLSA '86.

[10]  Hassan Aït-Kaci,et al.  An Algebraic Semantics Approach to the Effective Resolution of Type Equations , 1986, Theor. Comput. Sci..

[11]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[12]  Ramin Zabih,et al.  Boolean classes , 1986, OOPSLA 1986.

[13]  Maurice Nivat,et al.  Resolution of Equations in Algebraic Structures , 1989 .

[14]  J. Goguen,et al.  Order-Sorted Equational Computation , 1989 .

[15]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[16]  José Meseguer,et al.  Extensions and foundations of object-oriented programming , 1986, OOPWORK '86.

[17]  Ronald Morrison,et al.  Data Types and Persistence , 1988 .