Implement external composition function to handle multiple variable dependencies
Change canonical name of atoms to use the Prolog style: "name/arity"