code: public ImmutableSet<DataAtom> chaseAtom(DataAtom atom, ImmutableCollection<ImmutableLinearInclusionDependency<AtomPredicate>> dependencies) {
          return dependencies.stream()
                  .map(dependency -> immutableUnificationTools.computeAtomMGU(dependency.getBody(), atom)
                          .map(theta -> theta.applyToDataAtom(dependency.getHead())))
                  .filter(Optional::isPresent)
                  .map(Optional::get)
                  .collect(ImmutableCollectors.toSet());
      }
docs: This method is used to chase foreign key constraint rule in which the rule
  has only one atom in the body.
  
  IMPORTANT: each rule is applied only ONCE to the atom
  
  @param atom
  @return set of atoms