/* Circle is a special form of ellipse */
/* Subclasses ('circle' here) must have the same number of arguments */
/* as their superclass ('ellipse') for the superclass predicates to */
/* be applicable. The arguments may be renamed for clarity. */
:- object(circle(Center, Radius),
extends(ellipse(Center, Radius, Radius))).
:- info([
author is 'Paulo Moura',
version is 1.0,
date is 2000/4/22,
comment is 'Parametric object for representing geometric circles.',
parnames is ['Center', 'Radius'],
source is 'Example adopted from the POEM system by Ben Staveley-Taylor.']).
:- public(circumference/1).
:- mode(circumference(-number), one).
circumference(Circumference) :-
pi(Pi),
parameter(2, Radius),
Circumference is 2*Pi*Radius.
pi(3.14196).
:- end_object.