 <p>These subprograms (functions and procedures) are probably not what you want them to be: they are declared within the <code>Polynomials</code> package, but do not reference the type <code>Polynomial</code> at all.</p> <p>Apart from that, your question is easily answered: <code>POLYNOMIO</code> is not a tagged type, so object.function notation does not work. You should call type.function instead, i.e. <code>Polynomials.times (q)</code>.</p> <p>I would guess that you are using experience (or some pre-written code) from a language like C++ or Java. There, the functions (methods) belong to the class/type and take an implicit parameter to an instance of that class. This is not the case in Ada: the functions belong to the <em>package</em>, and you have to add a parameter yourself, e.g. </p> <pre><code>function times (p: Polynomial; b: Integer) return Integer; </code></pre> <p>(Shouldn't it return a Polynomial?)</p> <p>A question: why do you declare two similar types, <code>Polynomials.Polynomial</code> and <code>Polynomials_Test.POLYNOMIO</code>?</p>