Two computational primitives for algorithmic self-assembly: copying and counting.

Two computational primitives for algorithmic self-assembly: copying and counting.