Thinking About Thinking, Using Hegel's Logic
Thinking about thinking, Using Hegel’s Logic
Last week I laid out some of my views on what seems to be an effective strategy for developing software as Large Language Models (LLM) become the primary tool for writing code. This week I want to dive into a method for thinking about thinking, called Dialectics, developed by the enlightenment thinker Georg Wilhelm Friedrich Hegel.
Dialectics is a form of analysis that seeks to split a given subject into a thesis, antithesis, and synthesis. We say that the thesis and antithesis are contradictory, but they’re resolved by the synthesis. Using this form Hegel developed a method for analyzing how knowledge is gained. The primary source for this is his book The Logic which spans many revisions and versions.
The Logic is too large of a subject to adequately cover in a single blog post but here I will endeavour to touch on the most important aspects. Especially in regards to developing how we mediate information to LLMs. To that end this article is composed of three sections which mirror the three sections of the Logic.
The most important thing to know going into this is that Hegel thought of knowledge as a process, not a thing. So the Logic is a description of the process of knowledge. Like any process it must have a beginning, and it’s a difficult one. We must make something out of nothing and by doing so we have introduced a contradiction. Let’s begin with:
Being
Imagine a blank page. We might say that there is nothing on it, or more colloquially we could say that there is nothing there. But of course there IS something there, the pulp that makes the page and the constituent molecules etc. etc. While these statements contradict each other we as practical people understand that, “there is nothing there” really means “this page is blank”.
To understand Being in Hegel’s logic, we can examine why it’s practical to understand the statement “there is nothing there” to mean “this page is blank”. There is “nothing there” because nothing contradicts the presence of the same quality across the surface of the page, just blank white. If we ask ourselves what knowledge the page contains we would say that nothing is there.
When we mark the page or otherwise place something on it we have a page that contradicts a blank page. But in order for us to understand the contradiction between the two we still have to remember what a blank page is in the first place. As people we’re able to hold on to a mental image of the blank page and use it to essentially measure the difference between it and what is immediately in front of us.
So we have encountered our first major Dialectic. The thesis is the blank page or generically: the Ground, something we have experienced before, the antithesis is our immediate perception of the page, and the synthesis is the first stage of knowledge. Hegel refers to this stage as Being, which for our purposes is knowing that something is there, but nothing about its form or contents. We have to examine the specific things that make this particular page different from a blank page. By unfolding the contradiction into its specifics we advance to the next stage:
Essence
Essence is what is essential to a thing.
In this stage of the process we have a Being, there is something in the Ground, but what? We have to measure the difference between the Ground and the Being. This entails a new contradiction. The question is how do we take the measurement? Hegel refers to this problem as the Dialectic of Quality and Quantity whose synthesis is Form.
Quality and Quantity is an odd framing so my best instinct is to give an example. Going back to our page, if I drew a circle in pencil on the page, the page would have the quality of being white with a quantity of the color black perceptible on it. However if I shaded the page black, leaving behind a white circle, then we would have the quality of a black page with a perceptible quantity of white on it. While both examples contain opposite Qualities and Quantities they both encompass the same Form, the circle. So as a synthesis the Form describes a group of contradictory qualities and quantities. Those Qualities and Quantities can be thought of as the noisy raw sensory input and the Form as the signal.

But unlike signal processing just because we assign a Form to our experience doesn’t mean we have developed any knowledge. Whatever form we assign will inevitably be in contradiction with some or all of the qualities and quantities of the Being we are currently handling. So what we find is that there are actually two forms that we’re comparing, the immediate Form provided as the synthesis of the Qualities and Quantities of our sensory input, and an abstract form that isn’t immediate to us. This new Dialectic between the two forms is the Dialectic of Form and Content whose synthesis is Essence. The Form or thesis for this dialectic is the abstract Form we’re discussing, and the antithesis, the Content, is the Form derived from our immediate experience in this example. The process of Essence is synthesizing a new Form that satisfies the contents of the Being.
Of course we can understand Contents as more than simply the Form of immediate Qualities and Quantities. In fact we can analyze Quality and Quantity as Form and Contents itself, e.g. how can we count the number of circles on a page if we don’t understand how to identify a circle in the first place? What we find is a chicken and egg paradox. Contents are dependent on Forms and Forms are dependent on Contents. We have to assemble a context that synthesizes the Forms and Contents of the Being, something that can fit a new mental image to the Being which gives us knowledge about it. This context is:
Notion
Now we return to the Ground. Our mind is awash with specific forms and contents from the things that happen to us. Notion is then the “mental image” we have of some thing, composed of what we think the Essence of that thing is.
Notion differs from Essence in the same way a hypothesis for a study differs from the results. We try to apply Notion as a Ground to some new experience but generally find that both the Form of the Ground and the Content of the experience are contradictory to one another. It’s not enough to create a synthesis between the Ground Form and the experiential Content, but we also need to make a synthesis of the Ground Form and the Form of the Essence derived from the experience.
The creation of these syntheses, composed of Form and Contents, are part of a process called Sublation. In Hegelian Logic we’re not allowed to choose one way or another when we synthesize contradictions. Remember that in this framework knowledge is a process. So when we discover a contradiction we have to keep in mind that the contents from both thesis and antithesis we chop off in the synthesis are still essential to the synthesis itself because they contribute to the process of creating the synthesis. The new Form we’re creating is as much what it isn’t as what it is.
The result of Sublation is Notion, our mental image of what the thing is. The fundamental thesis of notion is the original Sublated Notion which is synthesized against the antithesis of the Essence derived from immediate experience.
Here the process should become clear: We have Being, the state of knowledge where we know that there is something but we don’t know what. Then we try to define the thing’s Essence by resolving its Form and Contents against the ground we derived being from. Finally we develop our Notion by creating syntheses to resolve the differences and contradictions between our Ground notion and the being we experience.
This process is circular so for every new experience we have our current Notion becomes the ground and by engaging the motion of these steps we gain knowledge.

Hegelian Motion as a Framework for Software Development
Since studying this concept I see the Dialectic as a pattern that repeats itself throughout just about any field or area of study you can think of. It is an especially powerful tool for software. This is evident in the success of Test Driven Development (TDD).
When we approach software development with TDD we first assemble our abstract Notion of what our software should do. Then we enter into a process where we create the Forms and Contents of the software to match our Notion. When we run the tests we’re measuring the contradiction between our Notion of what the software should do against what it does. Then as developers we have to synthesize the contradictions found, either adjusting the form and contents of our code or adjusting our Notion of what our software should do. By continuing to use passing tests to monitor for regressions we also embrace the idea of Sublation. What I find compelling about all of this is just how cleanly these concepts map onto the reasons why TDD is so successful
There is of course nothing new about TDD, what is new however is the introduction of LLM agents as a tool for Software Development. At first it’s quite easy to build a few demonstrations with these agents that can exhibit some cool behavior for relatively little time and effort. However the limitation of these tools seems to become evident as the scale and complexity of the software increases.
In my experience, implementing TDD as an essential component in the development cycle for using LLM agents significantly increases the size and scope of what an agent can accomplish on its own. Paired with comprehensive planning and documentation an LLM agent is capable of much more complex tasks than simply asking it to implement something.
Agents are still quite error prone even with the above strategies, I believe this has to do with how LLMs decide what information is important and what information can be forgotten over longer periods of time. I think that what information is persisted in the LLM’s context encodes certain patterns that the LLM isn’t aware of and when agents perform semantic compression these patterns can be lost.
I believe that the reason why TDD works so well is because by reinforcing a method over the entirety of the context that provides immediate feedback in terms of the contradictions between what the agent thinks it created and what it actually created allows the agent to be guided in the right direction.
Next week, now that I have provided my thought process, I look forward to finally presenting my project. I think I have settled on calling it Notion Augmented Generation and its goal is to implement the process of the Logic as a scaffolding for agents.