Translation:My dog is stupid: He never recognizes me.
In this case both a colon or semi-colon would be ok.
The colon because "he never recognises me" can be considered an explanation or example (of why the speaker thinks the dog is stupid). "I think my dog is stupid because he never recognises me"
The semicolon because two related sentences are being joined. This usage seems better to me. "My dog is stupid and he never recognises me"
You are absolutely right. People or animals who are dumb are not stupid. Unfortunately, the equivalence of dumb and stupid has become an established part of the English language. When I was a kid, we used to call stupid people "spastic". Hopefully, that has fallen out of use.
To be fair, most people (at least in the US) would never think of "dumb" to mean "mute" anymore, outside of fossilized phrases like "deaf, dumb, and blind," "struck dumb," and "dumbbell"; I know its history, but I've only ever heard it used here to mean "foolish" or "unintelligent."
Semantic change is an established fact of language though, and this is specifically an example of pejoration (becoming more derogatory). Perhaps there used to be a stereotype that mute people are feeble-minded, causing 'dumb' to gradually gain the additional sense of 'stupid', but now the original sense of 'mute, speechless' is dated and has largely been replaced by 'stupid' except in fixed expressions like "deaf, dumb, and blind." 'Dumb' has been a synonym of 'stupid' for about 200 years now, NOT because there is a perceived connection between them, but because speakers have simply lost or forgotten the original context. The same thing has happened to many words, such as 'idiot', 'lame,' 'moron,' and 'retarded,' all of which used to have neutral meanings!
Your points are well made Sean, but I am not sure that adjectives like idiot, lame, moron and retarded were ever truly neutral. Humans have a long history of pejorative adjectives for persons perceived as "different." I suggest that it behoves us to recognize this bias in our language, and use less pejorative words when they are available.
As a linguist, I can assure you that corpus studies of language use have found that all those terms were once completely neutral and clinical. Doctors used to use 'idiot' to mean someone with an IQ below 30, or lacking the capacity to develop mentally beyond the average four-year-old (and it derives from Greek idiotes, meaning a "private citizen, one who has no professional knowledge"); 'lame' meant "unable to walk properly"; 'moron' (from the Greek word for "dull") was someone with an IQ of 50-70; and 'retarded' applied to everyone with an IQ below 70. They were simply classifications of people with disabilities.
People should be encouraged to use less pejorative words if they don't intend to be offensive, but if you're calling someone "bête" in French, then you intend to be offensive...
Even when I was a child, retarded was the acceptable term for someone with learning disabilities. Kids started using it to be mean, so they stopped using it in the clinical sense and started saying "special needs." Now they won't let kids say retarded, so they call each other "special" as a put-down, so we're soon going to have to find a new word to use for the kids who are genuinely struggling with learning. If they would just let them use retarded then "special needs" could still be used in the proper sense. But they keep forcing the next proper word to be misused, and then it is not proper.