Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
69% Positive
Analyzed from 1393 words in the discussion.
Trending Topics
#hegel#https#more#type#com#write#based#antithesis#read#testing
Discussion Sentiment
Analyzed from 1393 words in the discussion.
Trending Topics
Discussion (41 Comments)Read Original on HackerNews
[0]: https://antithesis.com/blog/2026/hegel/
[1]: https://news.ycombinator.com/item?id=47504094
In reality, we hope to provide more guidance than this to people who want to write their own language frontend. This protocol reference doesn't talk about the realities of [hegel-core](https://github.com/hegeldev/hegel-core) and how to invoke it, for example.
We intend to write a "How to write your own Hegel library" how-to guide. You can subscribe to this issue to get notified when we write that: https://github.com/hegeldev/website/issues/3.
If you're eager, pointing your favorite LLM at https://hegel.dev/reference/protocol + https://github.com/hegeldev/hegel-rust and asking it to write you one for your language of choice should be enough to get you started!
A saner approach would be to start with a FFI-friendly language and create bindings. I don't think just being able to use an already written framework in Python is worth the trade-off.
For what it's worth the devs say their "current long-term plan is to implement a second Hegel server in Rust" [0], so the current state of affairs is probably a compromise between getting something usable for end users out and something more "sane", as you put it.
[0]: https://antithesis.com/blog/2026/hegel/#what%E2%80%99s-next
> It treated ontological Being as fixed, as beings nailed to a wall, lifeless and immobile.
This reads more as a response to Plato & Kant
That a myth has developed around the terminology and methodology is persuading, but also there’s nothing wrong with a programming library to call itself Hegel.
Interesting paper regardless thanks for sharing.
Antithesis: the tests pass with 100% coverage
Synthesis: the bug is a feature
The biggest thing that leaps out at me looking at it is that Hegel is very built around flexible user-specified data generation (using the library's base generators and combinators) mixed freely with test execution. Validity in contrast looks extremely type-based, which is convenient when you're only testing fairly general properties of built-in types, but I've never found flexible enough to be a really good basis for property-based testing once your testing needs get even a bit more complicated. e.g. a lot of tests want some sort of upper and lower bounds on their numbers, and I don't want to define a type for each.
For an only slightly more involved example of this, suppose you've got, say, a Project type, and Projects have an owner that is a User. You might want a test that is about a single user that has some number of projects. In a generator-based approach, this is easy: You just generate a User object, then you generate a bunch of Project objects that have to have that User as their owner. Just works.
In contrast, in a type based approach, there's basically no way to express this without e.g. defining a new ProjectsOwnedByASingleUser type and defining what it means to be a valid instance of that type... It's a lot of machinery for what is IMO a strictly worse user experience.
The generators of T, typically called an Arbitrary<T> can be constrained, e.g Arbitrary<number> could generate any float or just non-negative integers. Ideally we would define an Arbitrary<float64> or Arbitrary<u64>.
A sufficiently expressive type system makes it easier to narrow the gap between what is generated and what is assignable to type T, making it clearer what the valid input domain to the SUT is.
It seems to me that this is more or less the same thing, but Monte Carlo. Like MCMC vs symbolic Bayesian inference.
I often gesture towards this phenomenology when religious folk casually attempt to claim "spirit" as some form of belief they hold over me. I honestly don't know if I've developed the position well, it is almost entirely through the lens of continental philosophy absorbing Hegel, but I use it to illustrate that my concept of spirit, as an atheist, may not be a different phenomenological occurrence than that of a religious framing and even shares the quality of a rich historical lineage I can draw from. I could just as easily retreat into untranslated German that sounds poetic or prophetic to the uninitiated, but that would be doing exactly what I'm asking them not to do, leaning on a vocabulary the other person can't engage with without first conceding the ground it's built on. This seems to effectively persuade them to adjust their vocabulary to a register I can actually engage with without needing to hedge for the axiomatic differences we have.
This is a comfortable mode of engagement and it is one I can share with religious folk, but I do find they often refuse this register and I will admit I can't always articulate why I find their refusal frustrating either.
(I strongly recommend the latter.)
I want to cry...
This together with bombadil (web version pbt / Hegel / antithesis) for qa is a great advance.
We need more and more solutions like these for Agentic Coding.