There's no major difference.
What I mean is, right now a computer is your slave(*) (and you're a very unfortunate king). It is either a very dumb one, where you give him orders about every minute detail yourself. Like, "wash the first horse in my stable". (Or even "take a bucket of water to the first stall in the stable. Wash the horse there. Clean up the first stall in the stable".) Then, "wash my second horse". (Or even, "bucket.... second stall.... etc."). Etc.
Or it is a slightly more knowledgeable slave, where you give him a slightly more general orders, like "wash all the horses in my stable". But actually, you can say this to your initially dumb slave, who got smarter with the years by writing down recipes for each action he was required to perform, so more general recipes could refer to simpler recipes instead of describing every step anew.
So there really is no difference by now. Presumably you adhere to certain restrictions when talking to the second slave, which make it easier for you to describe your next request to him. You're still doing all the describing.
Both are nothing like a general manager to whom you explain your general feelings about how you'd like stuff be done on your behalf, and they figure out the minute details themselves.
Of course a general manager will need lots of assistants, who will probably make use of lots of dumb slaves. And dumberer yet.
A smart general manager will probably understand more about running your empire than you do yourself. They might even replace you at the helm altogether.
The above contends that functional is no subset of declarative.
edit: the second slave refuses to understand certain things from you. You could tell the first one, for example: "n is 1. take bucket of water to the nth stall. n is now 2. wash horse in the nth stall. n is now 3. clean up nth stall". Which will lead to run-time errors.
The smarter slave just won't understand you there. He knows that the first stable can't suddenly become second; it's the first one, always has been. This helps you to not give dumb orders. That's functional – knowing some stuff just isn't done, refusing to follow dumb orders. Imperative, has no problem doing that, at all. So with imperative programming the onus is on you, and you alone; the discipline imposed on you by the functional paradigm lightens your burden.
(*) Sorry for evoking this disgusting paradigm from humanity's dark history; not so distant in some parts of the world even today.