"You could say no!"
Translation:Ти міг сказати ні!
"Could" is the simple past form of "can," so it actually matches "могли" (a past form of "могти") very well.
"You could have said no," on the contrary, expresses a hypothetical action. That is, you were able to say "no," bu you did not. That would be "Ви могли би сказати ні" in Ukrainian.
That makes sense. I can't argue the Ukrainian, and I agree with "могли би [verb]" as a direct translation to the conditional construction "could have [verb]."
The only thing is that the verb in this sentence is not "could." It's "to say," so "could say" is the complete verb including the auxiliary "could," making it conditional aspect. "Could say" is not past tense in this example but is conditional. It's used when you give someone an option, having nothing to do with past. The past tense of "to say" is "said," so the past tense of "could say," present conditional, is "could have said," past conditional.
I see what you mean. The English sentence may be a conditional sentence (the second type) with implied condition. You would use "би" again in the Ukrainian sentence to translate it. However, without any further context and considering how it is translated into Ukrainian, it is just the modal verb "can" in the past form: "can say" -- present, "could say" (was/were able to say) -- past.
The negative "cannot" uses "could not" as past tense.
The firemen could not save the cat.
The positive "can" doesn't use "could" in the past tense because it implies that something "could" be done but wasn't actually done. For example,
The firemen could save the cat.
They could, but did they? We don't know. Instead, we should say,
The firemen were able to save the cat.
This implies that the cat was indeed saved.
Anyway, this is a Ukrainian course, not English, so as long as the English-speakers learn Ukrainian, it doesn't really matter. For me personally, being a Russian-speaker, if you tell me to translate "You could say no," I would say, Вы можете сказать нет, conditionally. If you told me, Вы могли сказать нет, I would say that you were able to say no, past tense, or that you could have said no, past conditional, although I agree that adding the word "бы" is more precise past conditional.
I am a native English speaker. That's what I'm trying to say. "You could say no" is conditional, not past tense. To translate Ви могли сказати ні as it pertains to past tense, it must be "You could've said no," even though it also translates to the conditional Ukrainian ви могли би сказати ні.
"Could" can be used to talk about ability in the past (i.e., as a past form of "can"). Please see https://en.wikipedia.org/wiki/English_modal_verbs#Past_forms and http://blog.oxforddictionaries.com/2013/07/can-or-could/ The later reference also describes other meanings/usages of "could." Now, we just need to agree on which one of them applies to our sentence. I think we can ask a native English speaker. Then we will be able to decide, if the Ukrainian translation is correct or not.