More about Lua.
While you can use tables as keys in other tables, tables have object identity, so doing so causes awkwardnesses.
local tab = {}
tab[{"a", "b", "c"}] = "foo"
tab[{"a", "b", "c"}] = "bar"
Now [font=monospace]tab[/font] contains two elements, which you can iterate over (while of course the length operator reports zero).
Further,
tab[{"a", "b", "c"}] == "foo"
would evaluate to [font=monospace]false[/font] and
print(tab[{"a", "b", "c"}])
outputs the string "[font=monospace]nil[/font]".
That's because each of those four "abc" tables is a different entity.
So if you want to use tables as keys, you would need to store them somewhere in order to refer to them as needed. Probably store them in another table. With a value-type key so that you can look up specific members. At which point you'd wonder why you didn't use the value-type key in the first place.