An '''abstract structure''' defines a set of components, the relationships between those components, and a set of constraints that hold for the structure. ** Description ** Each '''abstract structure''' implies a set of operations that may be performed on the structure. The structure definition, together with that set of operations, is called an [abstract data types%|%abstract data type]. Tcl is composed of a layered set of abstract structures: '''[string]''': The fundamental structure. '''[word]''': Defined in terms of [string]. '''[list]''': Defined in terms of [word]. '''[dict]''': Defined in terms of [list], with an additional constraint, and additional operations. The operations it implies is a superset of the operations that [list] implies. Additionally, there are two programmatic abstract structures: '''[command]''': Defined in terms of '''[word%|%words]''' and [dodekalogue%|%substitutions]. '''[script]''': Defined in terms of [command].