modified a little bit to make value analysis works correct
TODO: need to figure out the real reason
update range value analysis
1. update range value analysis to support double side top, which
means for a range value, it can only be top in one bound, i.e. <2.0,
+inf>. before, we dicided to push range value result of the variables
having dependency to double side top, but for some cases, even the
operands have dependency, we can also get more info than just double
side top, i.e.:
	a=5.0;
	while exp
	a = a+10;
	end
inside the loop, the range value result of a should be <15.0,+inf>
instead of <-inf,+inf>, and this info may help in some situations,
like array bound check, constructing an array or some cases else.
2. a small debug in shape analysis node.
TODO
test range value analysis with more benchmarks
extend shape analysis to support not only symbolic name, but also
symbolic expressions, i.e.:
	a=colon(m,n)
the shape(a) should be [1,n-m+1], and then when we do run time
allocation of a, we can do allocate(a(1,n-m+1)).