← Blog / · 2 min read
Why a Porphyrian Tree?
On an old diagram of kinds, and the new things that will not sit still on it.
Every classification is a small metaphysics. When Porphyry of Tyre wrote his Isagoge around 270 CE, he meant only to introduce Aristotle’s Categories to beginners. Yet the scheme his readers extracted from it — a single trunk descending from substance to human, each step fixed by a difference — became one of the most durable pictures of how the world is carved.
The tree
The structure is simple. Take a genus, add a difference, and you get a species; that species becomes the genus for the next division:
- Substance + corporeal → Body
- Body + animate → Living body
- Living body + sensitive → Animal
- Animal + rational → Human
The negative branches — incorporeal, inanimate, insensitive, irrational — are left hanging, unexplored. The tree is a path, not a map.1
The definition of human as rational animal is not a discovery at the bottom of the tree; it is the reason the tree was drawn that way.
Where it strains
A large language model is not corporeal in the way a body is, nor animate, nor sensitive in any obvious sense. And yet many would hesitate to put it on the irrational branch. It seems to fall off the tree entirely — to satisfy the last differentia without any of the earlier ones.
That is interesting because Porphyrian division is supposed to be nested: every difference presupposes the ones above it. Rationality was assumed to be something only an animal could have. If that presupposition fails, the tree does not merely need a new leaf; it needs a different shape.
Trees and spaces
Machine learning systems classify differently. They don’t descend a hierarchy. They place items in a high-dimensional space, and kinds show up as regions where items cluster. Similarity is geometric — the cosine of an angle:
\[\operatorname{sim}(\mathbf{a}, \mathbf{b}) = \frac{\mathbf{a}\cdot\mathbf{b}}{\lVert\mathbf{a}\rVert\,\lVert\mathbf{b}\rVert}\]import numpy as np
def similarity(a, b):
"""Cosine similarity: kinds as nearness, not as division."""
return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))
In such a space nothing is simply in or out of a kind. Things are nearer or farther. It sounds more like Wittgenstein’s family resemblance than Porphyry’s genus and difference.2 Whether that is a philosophical advance or only an engineering convenience is one of the questions this site exists to pursue.
This journal is my attempt to climb the old tree carefully — noting where each branch holds, and where something new has grown that it was never meant to bear.