I am working on a problem that can be simplified to consist of the following:
- an initial symbol tree
- a list of interpretations (an interpretation is a transformation guarded by a predicate)
- a predicate describing what the target symbol tree should look like
Where the goal is to find a path from the initial symbol tree to some symbol tree that matches the predicate of the target symbol tree via the given list of interpretations.
To complicate matters, a transformation can be from a symbol tree to symbol tree, but it might also transform a symbol tree to a new interpretation, which will then be added to the list of available interpretations. Also, predicates and transformations can have access to extra information such as the context and in turn can also request to try and interpret a symbol a certain way (i.e. the interpretation process is recursive).
If implemented naively, this can get computationally expensive really fast, so several optimizations are added to make it more feasible to compute, e.g. requiring transformations to be transparant about on what kind of symbols they will work, so transformations can be ruled out as soon as possible.
The problem described above, seems to me common enough, so I assume there is some existing body of literature that has researched this problem. I tried searching for it, but I have only found literature about very specialized versions of this problem that e.g. only allow certain builtin predicates and where the transformation was not a function, but was a direct mapping to some other symbol tree.
It might be that I just have not yet found the right terminology or that my current approach is considered to be to general, such that people already ruled it out as infeasible, and thus has not received any real attention in literature.
Does anyone know of any literature about the problem I described above? It would be helpful to see what other people have done in this problem domain, to e.g see other approaches, problems and solutions I might have overlooked so far.