Actually the correct code is
require("cas")
local y
y=cas.solve("{x+y=3, y^2=4}","{x,y}")
print(y)
It's completely different than what you wrote

You have to remember something : the CAS only understands numbers, strings, and CAS expressions.
You
cannot pass a Lua table to a CAS function.
"{x+y=3,y^2=4}" is a string, you can give it as argument.
But {"x+y=3","y^2=4"} is a Lua table with two strings, and the CAS does not understand it.
If you really want to give a list with 2 expressions as strings, write something like
exp1 = "x+y=3"
exp2 = "y^2=4"
y=cas.solve( "{" .. exp1 .. "," .. exp2 .. "}", "{x,y}")
and NOT
y=cas.solve( {exp1, exp2}, "{x,y}")
which is incorrect.
When you gives a number or a CAS expression as parameter of a CAS function, it is actually transformed into a string. But tables aren't converted in a comprehensible way for the CAS (by default; this can be changed).