Is a CPU declarative?
Aren't you both wrong? To me this sounds like arguing that if someone thinks in English then their neurons are wired in English, which is nonsensical.

If you actually want to force application of the terms then I think it is just a matter of perspective. For example, an assembly instruction (or machine code) might tell a CPU to add.

From the perspective of a higher abstraction layer (like an assembly programmer) that instruction would be imperative because it is being used to tell the CPU how to go about doing some process.

But to the computer hardware engineer actually designing the CPU, an addition instruction might be declarative because he is the one who has to design the microcircuitry that actually does the addition. The add instruction just tells the CPU to add (i.e. what to do). It doesn't determine how the CPU actually goes about the addition (i.e. how to do it). That's determined by the actual microcircuitry performing the addition.

The same logic applies as you applies as you get even deeper down into the abstraction layers for hardware into computational blocks like registers or adders, and even lower into gates, and lower again into transistors. Every "abstracted entity" is imperative to the person using it but declarative to the person designing it.

Sounds like needless classification gone amock to me.