isa -- library of type checking procedures

NOTE: This procedures don't check their arguments. They are intended
      to be called from other procedures, not from the user.

isa::domain_element(e,D) -- tests if 'e' is an element of domain 'D'
isa::executable(x)       -- tests if 'x' is an executable object
isa::ident_list(l)       -- tests if 'l' is a list of identifier
isa::ident_set(s) 	 -- tests if 's' is a set of identifier
isa::integer_poly(p) 	 -- tests if 'p' is a polynomial 
					 with integer coefficients
isa::list_of(l,t) 	 -- tests if 'l' is a list of elements of type 't'
isa::number(x) 		 -- tests if 'x' is a number
isa::number_poly(p) 	 -- tests if 'p' is a polynomial 
				 	 with numerical coefficients
isa::poly_of(p,t) 	 -- tests if 'p' is a polynomial 
					 with coefficients of type 't'
isa::rational(x) 	 -- tests if 'x' is a rational number
isa::rational_poly(p) 	 -- tests if 'p' is a polynomial 
					 with rational coefficients
isa::real(x) 		 -- tests if 'x' is a real number
isa::real_poly(p) 	 -- tests if 'p' is a polynomial with real coefficients
isa::set_of(s,t) 	 -- tests if 's' is a set of elements of type 't'
isa::string_list(l) 	 -- tests if 'l' is a list of strings
isa::string_set(s) 	 -- tests if 's' is a set of strings

To test if 'L' is a list of polynomials with rational coefficients type:

isa::list_of(L, isa::rational_poly)
