Fixed expr type checking and propagation, it was only checking the first and last atom of expr