package useful is
  type int_vector is array (natural range <>) of integer;
  function dot (L, R : in int_vector) return integer;
end useful;

package body useful is
  function dot (L, R : in int_vector) return integer is
    variable result : integer := 0;
  begin
    assert (L'left = R'left)
    report "Vectors have different ranges"
    severity warning;
    assert (L'right = R'right)
    report "Vectors have different ranges"
    severity warning;
    for i in L'range loop
      result := result + L(i)*R(i);
    end loop;
    return result;
  end dot;
end useful;

