SymbolicTypeIF.java

package edu.udel.cis.vsl.tass.symbolic.IF.type;

/**
 * A symbolic type represents the type of a symbolic expression.
 * 
 * @author siegel
 * 
 */
public interface SymbolicTypeIF {

	/**
	 * The different kinds of types.
	 */
	public enum SymbolicTypeKind {
		BOOLEAN, INTEGER, REAL, ARRAY, TUPLE, FUNCTION
	};

	/**
	 * Returns the kind of the type.
	 */
	SymbolicTypeKind kind();

	/**
	 * Tells whether the type is a real or integer type
	 * 
	 * @return true if kind is REAL or INTEGER, false otherwise
	 */
	boolean isNumeric();

	/**
	 * Tells whether the type is an integer type.
	 * 
	 * @return true if kind is INTEGER, else false
	 */
	boolean isInteger();

	/**
	 * Tells whether the type is a real type.
	 * 
	 * @return true if kind is REAL, else false
	 */
	boolean isReal();

	/**
	 * Tells whether the type is the boolean type.
	 * 
	 * @return true if kind is BOOLEAN, else false
	 */
	boolean isBoolean();

}