def subst( hash )
      subst_var = @index.subst hash
      value = @value.subst( @index => subst_var ).subst hash
      initial = @initial ? @initial.subst( hash ) : nil
      block = @block.subst hash
      self.class.new value, subst_var, initial, block, @var1, @var2
    end
def subst( hash )
      subst_var = @index.subst hash
      value = @value.subst( @index => subst_var ).subst hash
      initial = @initial ? @initial.subst( hash ) : nil
      block = @block.subst hash
      self.class.new value, subst_var, initial, block, @var1, @var2
    end
Substitute variables

 Substitute the variables with the values given in the hash.

 @param [Hash] hash Substitutions to apply.

 @return [Node] Term with substitutions applied.

 @private