package models.terms;

import models.algebra.Symbol;

public abstract class EvaluatableTerm extends RDLTerm{

	protected EvaluatableTerm(int order, int size) {
		super(order, size);
	}
	
	public abstract boolean isLinearRightNormalized();
	public LinearRightNormalizedType getLinearRightNormalizedType() {
		if (isLinearRightNormalized()) {
			return LinearRightNormalizedType.LINEAR_RIGHT_NORMALIZED;
		} 
		return LinearRightNormalizedType.NOT_LINEAR_RIGHT_NORMALIZED;
	}
	
	public abstract EvaluatableTerm linearRightNormalize();
	public abstract void selfLinearRightNormalize();
	
}
