Pick an arbitrary set X, with a (transitive) group action from a group G.
For each element of X, you have a copy of all the nodes.
Each symbol now has multiple pointers.
A=Symbol(func=const True)
pa=Pointer(A,g∈G)
C=Symbol(func=xor, parents=[pa,pb])
In your example, X=N and G={f(n)=n+c:n∈N} the g being used in the pointers are −1,0,1. As you are only using a finite subset of G, you have the structure of a Caley graph.
The graphs you might want include various latices and infinite trees.
Your evaluation is a function from pairs (s,x) where s is a Symbol and x∈X to values.
Pick an arbitrary set X, with a (transitive) group action from a group G.
For each element of X, you have a copy of all the nodes.
Each symbol now has multiple pointers.
A=Symbol(func=const True)
pa=Pointer(A,g∈G)
C=Symbol(func=xor, parents=[pa,pb])
In your example, X=N and G={f(n)=n+c:n∈N} the g being used in the pointers are −1,0,1. As you are only using a finite subset of G, you have the structure of a Caley graph.
The graphs you might want include various latices and infinite trees.
Your evaluation is a function from pairs (s,x) where s is a Symbol and x∈X to values.