Foundations of Science

, Volume 23, Issue 1, pp 173–180 | Cite as

The Porphyrian Tree and Multiple Inheritance: A Rejoinder to Tylman on Computer Science and Philosophy

  • Lorenz DemeyEmail author


Tylman (Found Sci, 2017) has recently pointed out some striking conceptual and methodological analogies between philosophy and computer science. In this paper, I focus on one of Tylman’s most convincing cases, viz. the similarity between Plato’s theory of Ideas and the object-oriented programming (OOP) paradigm, and analyze it in some more detail. In particular, I argue that the (Neo)platonic doctrine of the Porphyrian tree corresponds to the fact that most object-oriented programming languages do not support multiple inheritance. This analysis further reinforces Tylman’s point regarding the conceptual continuity between classical metaphysical theorizing and contemporary computer science.


Porphyrian tree Object-oriented programming Multiple inheritance Diamond problem Computer science Neoplatonic metaphysics 



I would like to thank Hans Smessaert, Margaux Smets, Wouter Termont, Leander Vignero and two anonymous referees for their helpful feedback on an earlier version of this paper. The two issues discussed in Sect. 5 were first raised by Vignero and Termont, respectively. The ideas presented in this paper were first proposed in one of the additional theses of my PhD dissertation (Demey 2014). My research is financially supported by a Postdoctoral Fellowship of the Research Foundation–Flanders (FWO).


  1. Archibald, J. D. (2014). Aristotle’s ladder, Darwin’s tree. The evolution of visual metaphors for biological order. New York, NY: Columbia University Press.CrossRefGoogle Scholar
  2. Barnes, J. (Ed.). (2003). Porphyry’s introduction. Translation and commentary. Oxford: Oxford University Press.Google Scholar
  3. Blum, P. R. (2012). Studies on early modern Aristotelianism. Leiden: Brill.CrossRefGoogle Scholar
  4. Chisholm, R. M. (1989). On metaphysics. Minneapolis, MN: University of Minnesota Press.Google Scholar
  5. Copenhaver, B. P., Normore, C. G., & Parsons, T. (Eds.). (2014). Peter of Spain, summaries of logic. Text, translation, introduction and notes. Oxford: Oxford University Press.Google Scholar
  6. Demey, L. (2014). Believing in logic and philosophy. Ph.D. thesis, KU Leuven.Google Scholar
  7. Demey, L., & Smessaert, H. (2016). Metalogical decorations of logical diagrams. Logica Universalis, 10, 233–292.CrossRefGoogle Scholar
  8. Demey, L., & Smessaert, H. (2017) Combinatorial bitstring semantics for arbitrary logical fragments. Journal of Philosophical Logic. doi: 10.1007/s10992-017-9430-5.
  9. Diestel, R. (2006). Graph theory. Heidelberg: Springer.Google Scholar
  10. Emilsson, E. (2015). Porphyry. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.Google Scholar
  11. Franklin, J. (1986). Aristotle on species variation. Philosophy, 61, 245–252.CrossRefGoogle Scholar
  12. Gosling, J., Joy, B., Steele, G., Bracha, G., & Buckley, A. (2015). The Java ® Language Specification, Java SE 8 Edition. Redwood City, CA: Oracle America.Google Scholar
  13. Hacking, I. (2007). Trees of logic, trees of Porphyry. In J. L. Heilbron (Ed.), Advancements of learning: Essays in honour of Paolo Rossi (pp. 221–263). Florence: Olschki.Google Scholar
  14. Joque, J. (2016). The invention of the object: Object orientation and the philosophical development of programming languages. Philosophy and Technology, 29, 335–356.CrossRefGoogle Scholar
  15. Kaczmarek, J. (2002). On the Porphyrian tree structure and an operation of determination. Bulletin of the Section of Logic, 31, 37–46.Google Scholar
  16. Malayeri, D., & Aldrich, J. (2009). CZ: Multiple inheritance without diamonds. OOPSLA ’09 (pp. 21–40). New York, NY: ACM.CrossRefGoogle Scholar
  17. Martini, S. (2016a). Several types of types in programming languages. In F. Gadducci & M. Tavosanis (Eds.), History and philosophy of computing (HaPoC 2015) (pp. 216–227). Berlin: Springer.CrossRefGoogle Scholar
  18. Martini, S. (2016). Types in programming languages, between modelling, abstraction, and correctness. In A. Beckmann, L. Bienvenu, & N. Jonoska (Eds.), Pursuit of the Universal (Computing in Europe 2016) (pp. 164–169). Berlin: Springer.Google Scholar
  19. Mitchell, J. C. (2004). Concepts in Programming Languages. Cambridge: Cambridge University Press.Google Scholar
  20. Moktefi, A., & Shin, S. J. (2012). A history of logic diagrams. In D. M. Gabbay, F. J. Pelletier, & J. Woods (Eds.), Handbook of the History of Logic (Vol. 11, pp. 611–682)., Logic: A History of its Central Concepts Amsterdam: North-Holland.Google Scholar
  21. Parsons, T. (2012). The traditional square of opposition. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.Google Scholar
  22. Sakkinen, M. (1989). Disciplined inheritance. In S. Cook (Ed.), ECOOP ’89 (pp. 39–56). Cambridge: Cambridge University Press.Google Scholar
  23. Seuren, P., & Jaspers, D. (2014). Logico-cognitive structure in the lexicon. Language, 90, 607–643.CrossRefGoogle Scholar
  24. Smessaert, H., & Demey, L. (2014). Logical geometries and information in the square of opposition. Journal of Logic, Language and Information, 23, 527–565.CrossRefGoogle Scholar
  25. Smessaert, H., & Demey, L. (2015). Béziau’s contributions to the logical geometry of modalities and quantifiers. In A. Koslow & A. Buchsbaum (Eds.), The road to universal logic (pp. 475–494). Basel: Springer.Google Scholar
  26. Strasser, C., & Antonelli, G. A. (2016). Non-monotonic logic. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.Google Scholar
  27. Studtmann, P. (2013). Aristotle’s Categories. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.Google Scholar
  28. Thomasson, A. L. (2004). Methods of categorization. In A. C. Varzi & L. Vieu (Eds.), Formal ontology in information systems (pp. 3–16). Amsterdam: IOS Press.Google Scholar
  29. Tylman, W. (2017). Computer science and philosophy: Did Plato foresee object-oriented programming? Foundations of Science. doi: 10.1007/s10699-016-9506-7.
  30. van Benthem, J. (2007). Logic in philosophy. In D. Jacquette (Ed.), Philosophy of Logic (pp. 65–99). Amsterdam: North-Holland.CrossRefGoogle Scholar
  31. Verboon, A. R. (2008). Einen alten Baum verpflanzt man nicht. Die Metapher des Porphyrianischen Baums im Mittelalter. In I. Reichle, S. Siegel, & A. Spelten (Eds.), Visuelle modelle (pp. 251–268). Fink: Munich.Google Scholar
  32. Verboon, A.R. (2010) Lines of thought: Diagrammatic representation and the scientific texts of the Arts faculty, 1200–1500. PhD thesis, Leiden UniversityGoogle Scholar
  33. Verboon, A. R. (2014). The medieval tree of Porphyry: An organic structure of logic. In P. Salonius & A. Worm (Eds.), The tree: Symbol, allegory, and mnemonic device in medieval art and thought (pp. 95–116). Turnhout: Brepols.CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media B.V. 2017

Authors and Affiliations

  1. 1.Center for Logic and Analytic PhilosophyKU LeuvenLeuvenBelgium

Personalised recommendations