package ec.gp.syntactic.equivalence;

import ec.gp.semantic.func.SimpleNodeBase;

public interface IEquivalenceChecker {

	/**
	 * Returns true if two provided programs are syntactically equivalent.
	 * 
	 * @param program1
	 * @param program2
	 * @return
	 */
	boolean areEquivalent(SimpleNodeBase<?> program1, SimpleNodeBase<?> program2);

	boolean areEquivalent(String program1, String program2);
	
	boolean areEquivalent(String program1, Object program2);
	
	Object getInternalRepresentation(String program);
}
