My guess is we're supposed to read this sentence as:
Ɐh G(h)
(for all my hats, the hat is green)
or whatever similar formulation:
Ɐx (H(x) ^ M(x)) → G(x)
(for all x, if x is a hat and x is mine, then x is green)
Either way, the general idea will be that negating the statement (making it a lie) will make it a negative existential quantifier:
Ǝh ~G(h)
(there exists one of my hats such that it is not green)
Or in the case of the alternate formulation:
Ǝh (H(x) ^ M(x)) ^ ~G(x)
(there exists an x, such that x is a hat and x is mine, and x is not green)
So I think we answer (A) The liar has at least one hat.
All that said, I think other commenters are rightly pointing out that this relies on a very questionable distinction between semantics - which is what we've formalized above - and pragmatics. In conversational pragmatics, "All my hats are green" means that I have at least one hat (probably at least 3, even, since the sentence didn't say "My only hat" or "Both my hats"). One might explain this by way of an implicit pragmatic conversational principle that all statements should be relevant and informative in some way, which vacuously true statements (like, "all grass growing on the moon is purple") are not (see the "Gricean maxims").
If we don't make this implausible distinction between semantics and pragmatics (implausible to me because it assumes that sentences in general are usefully analyzed as having "propositional" meanings which can be evaluated outside of any conversational context), we might cash out the statement as:
Ɐh G(h) ^ Ǝh G(h)
so we can conclude, since this is a lie, that:
Ǝh ~G(h) ∨ Ɐh ~G(h)
Which is consistent with the liar owning no hats, as in:
> "All my hats are green"
> "Liar! You don't own any hats"