(Question: in "a = a + 1", should the second 'a' be a valid "declaration"
for the first one?)
Yes, this is already an issue with strict.lua and a common case is:
arg = arg or { 'default_first', 'default_second', etc }
Of course this is valid for any global that you now that *may* exist.