def demand
      s1 = @index2.size / 2
      j0 = INT.new( 0 ).major( @index0 + s1 + 1 - @index1.size )
      if @initial
        retval = @initial.simplify
      else
        j = j0.get
        i = @index0.get + s1.get - j
        retval = @value.subst( @index1 => INT.new( i ),
                               @index2 => INT.new( j ) ).simplify
        j0 = ( j0 + 1 ).simplify
      end
      j0.upto( ( @index2.size - 1 ).minor( @index0 + s1 ) ) do |j|
        i = @index0.get + s1.get - j
        sub = @value.subst @index1 => INT.new( i ), @index2 => INT.new( j )
        retval.assign @block.subst( @var1 => retval, @var2 => sub )
      end
      retval
    end
def demand
      s1 = @index2.size / 2
      j0 = INT.new( 0 ).major( @index0 + s1 + 1 - @index1.size )
      if @initial
        retval = @initial.simplify
      else
        j = j0.get
        i = @index0.get + s1.get - j
        retval = @value.subst( @index1 => INT.new( i ),
                               @index2 => INT.new( j ) ).simplify
        j0 = ( j0 + 1 ).simplify
      end
      j0.upto( ( @index2.size - 1 ).minor( @index0 + s1 ) ) do |j|
        i = @index0.get + s1.get - j
        sub = @value.subst @index1 => INT.new( i ), @index2 => INT.new( j )
        retval.assign @block.subst( @var1 => retval, @var2 => sub )
      end
      retval
    end
Reevaluate computation

 @return [Node,Object] Result of computation

 @see #force

 @private