1. A computer executable method for representing programming constructs of a declarative programming language, including: receiving declarative programming language representations of a first syntax tree data structure and of a second syntax tree structure; receiving an indication of a selection of a lexical scope resolution alternative from amongst multiple lexical scope resolution alternatives, wherein each of the multiple lexical scope resolution alternatives defines a different way of cross-referencing first syntax tree data structure to the second syntax tree data structure; and generating, by a computing device, a directed graph data structure including at least one cross reference between a node of the first syntax tree data structure, a node of the second syntax tree data structure, and at least two factored definitions, wherein the at least one cross reference is based on the selected lexical resolution alternative; and automatically combining, by the computing device, the at least two factored definitions into a combined definition of the directed graph data structure that is equivalent to the at least two factored definitions.