import java.util.List;
public interface State
{
/*
This is an interface that describes the properties that
states of a state space must have in order for a
minimax search algorithm
to be able to find a solution.
There are three methods in this interface.
The methods actually define the state space,
given an appropriate definition of a state class
(that implements this interface),
and an appropriate constructor for this class.
*/
/**
Determines whether a goal state
(that is, a terminal state) reprensents a win
for the current player.
If invoked for a nongoal state, this method returns
an unpredictable value.
@return true iff the state represents
a win for the current player
*/
boolean findValue();
/**
This method corresponds to the Goal-Test function of
Russell and Norvig.
@return true iff the state represents a goal state
(also known as a terminal state).
*/
boolean isGoal();
/**
This method corresponds to the Expand function
of Russell and Norvig.
@return a List of the successors of the given state
in the state space.
*/
List findSuccessors();
}