- When does 4 become 5?
4.5 >=? Lots of programming languages define casting as the largest integer value, not the the rounded value. Outside of programming, there are scenarios where 4 cannot be rounded to 5 either… Like a height requirement for a ride at an amusement park. Though, it might seem natural to round it to humans.
- When does green become black in a gradient?

With computer languages, we define colors with red, blue, and green. The above is a gradient on horizontal x-axis, with
(r = 0, g = x, b = 0)This is more complicated. If we surveyed 1 million people, maybe we’d get a plot that defined the start of green as something like the following.

And then maybe we could take the the average and state that as green.

Though, is that really good enough description of green to serve as a legal definition of green? Maybe lawyers would select significantly different results than the general population when surveyed for the value of green. Maybe the results should be restricted to lawyers?
- And when does 2 become 7?
If we restricted it pixels to a 3x5 grid…
We could possibly define 2 and 7.


But then is this a 2 or a 7?

These are the kinds of things I bring up when talking to people about using LLMs. Sure for short simple logic the room for ambiguity is small, but for more complex systems, the benefit of programming it is to be explicit. Prompts != programming as they don’t produce deterministic outputs and can lead to faulty outcomes (even if they run).
I’d like to propose a combination of the two. A language model that parses natural language but checks back in with the user to see if it has understood. This can be done by converting high-ambiguity sentences to low-ambiguity ones when appropriate and storing the latter as source. When the interpretation program is confused, it can check back in with the user to ask what they meant.
This is something I’ve been thinking about lately. It’s a huge problem that looking into how a given software project works or specifically what it does is normally beyond the reach of most people, or in the case of software that is very elaborate or wasn’t written to be read, beyond the reach of almost everyone. It could help a lot to have some kind of tiered specification/documentation going from more concise to more detailed that can at least be independently confirmed in an automated way to have been derived from each other.
The ambiguity is exactly why a spec has to be runnable. Natural language always leaves room, so what carries the weight is the acceptance check the agent can run and fail against, not the prose. If nothing can fail the output, the ambiguity just moves downstream into the code.




