Bottom-up synthesis of a data structure;
1st argument z is the initial element for the synthesis;
2nd argument o is for reduction of results from subterms;
3rd argument f updates the synthesised data according to the given term