So in denotational design, you say for most important thing is, what do I want to talk about? Ok, I'm going to talk about these linear maps. And then the second question is, what is a language? What's a vocabulary in which I can express these things? I can build them up. I combine them, build them out of nothing, all these things; it's these operations. What algebraic abstraction already exists? And we've already proven things. We've already learned it for some other reason.
Then the next step is now we're going to say, OK, so then now I kind of understand the mathematical realm, the specification. That's the story I'm going to tell the user. Now what about the implementer? What I'm going to tell the implementer, which may be me, maybe somebody else. What I'm going to tell them is I want you to, I want you to find a way of implementing the first story. And there are two kinds of choices to make. One is the representation you're going to use for the things of interest. And the other is how you're going to implement the operations. Which operations? The one that the first model already wants to talk about.
Now, how do you know how to implement them correctly? Well, there's two questions. What does it mean to be correct? And then how do you get there? What it means to be correct is always the same. It's a homomorphism. OK, So what homomorphism you have to talk about? How does the representation mean the things we're talking about? if you don't know what the representation means, you can't possibly address the question of how to implement operations on them because it's only the meaning that guides them. You have to know what the up the arguments mean and what the operation means.

What is interesting here is how does it compare to Domain Driven Design. There, again, we need a shared vocabulary, but it’s closer to how the domain expert understands the domain. Here Elliott argues for a vocabulary that’s in the mathematical realm. Maybe in the cases he has in mind the language of mathematics is indeed the language of domain experts. But if not, we do have an important decision point. Do we express the problem in the language of mathematics & categories or using a vocabulary that’s closer to how domain experts communicate things?