To conclude the characterization of FDs as a data-structure, it is useful to contrast functional unification (FU) with the more well known structural unification (SU) as used in PROLOG for example, and to distinguish FDs from the first-order terms used in SU.
The most important difference is that functional unification is not based on order and length. Therefore, {a:1, b:2} and {b:2, a:1} are equivalent in FU but not in SU, and {a:1} and {b:2, a:1} are compatible in FU but not in SU (FDs have no fixed arity). The following quote from Knight summarizes the distinction between feature structures and the first order terms used in SU:
- Substructures are labeled symbolically, not inferred by argument position.
- Fixed arity is not required.
- The distinction between function and argument is removed.
- Variables and coreference are treated separately. [#!Knight (!#,#!p.105)!#]
A comparison between the FD notation and the first-order term notation illustrates these differences. The following FD and first-order term can be used to represent the fact that Steve builds a crane that is 2 lbs and 4 feet high:
((process build)
(agent Steve)
(object ((concept crane)
(weight 2)
(height 4))))
build(Steve, Crane(C1, 2, 4))
4
Contrasting these two notations for the same example illustrates the differences:
((process like)
(agent {object}))