A correct, precise and efficient integration of set-sharing, freeness and linearity for the analysis of finite and rational tree