start with function f gives as expression build parse tree for expression (leaves and variables / constants, nodes are functions of child expressions) apply general composition rule that preserve convexity Greedy parses may fail, such as in the case of logsumexp.