Using the RM for ADTs
Date: Thu, 2 Jul 2009 02:28:54 -0700 (PDT)
Message-ID: <2fb127c0-13e3-45e6-a93b-3afe7dead964_at_d4g2000yqa.googlegroups.com>
Consider a requirement to record electronic circuits in a relational database. Circuits are abstract mathematical objects (i.e. "values") independent of physical layout. There is no requirement to label individual components (e.g. all 1 ohm resistors are indistinguishable), nor any requirement to label circuit nodes.
The reason for recording circuit values in a physical database is outside the scope of this discussion.
Two circuits are equivalent if they are isomorphic. A model for a circuit value must define exactly when circuits are identical. Failure to do so would mean for example that a set of circuit values is illdefined (e.g. one cannot determine the cardinality of the set).
In principle a very large circuit can consist of thousands of components, wired up in a complex network. Recursive types cannot eliminate the need for abstract identifiers.
One approach is to use abstract identifiers for the circuit nodes, and use relations such as:
resistor(N1,N2,R) :- there is a resistor of value R
connected between nodes N1,N2.
This raises the question of whether the following symmetry
resistor(N1,N2,R) <=> resistor(N2,N1,R)
should be an integrity constraint. If so then in the logical model information is represented twice and it complicates updates. If not then there are potential surprises when using the relation. Do we take the union of the resistors connected from N1 to N2, and N2 to N1?