Exercise 14: Implement SolvePathVariable

Summary

Inputs:

A parent entity, which might be null.
A parent relation type which describes the mandatory relationship between the parent entity and the variable entity that is being solved for.
A child entity, which might be null.
A child relation type which describes the mandatory relationship between the the variable entity that is being solved for and the child entity.

Outputs:

All entities that satisfy the conditions.

To accomplish this, new indices and their respective look up functions will need to be added to the Entity and Brain classes:

New index:

Given an entity Y and relation type R, what entities X satisfy the relationship X R Y?

New lookup functions:

1.GetInverseHasList: Given an entity X, which entities have a has_a relationship with X?

2.GetInverseIsAList: Given an entity X, which entities have a is_a relationship with X? (Actually, it appears that this one might not be needed)