We present a machine-readable movement writing for sleight-of-hand moves with cards -- a "Labanotation of card magic." This scheme of movement writing contains 440 categories of motion, and appears to taxonomize all card sleights that have appeared in over 1500 publications. The movement writing is axiomatized in $\mathcal{SROIQ}$(D) Description Logic, and collected formally as an Ontology of Card Sleights, a computational ontology that extends the Basic Formal Ontology and the Information Artifact Ontology. The Ontology of Card Sleights is implemented in OWL DL, a Description Logic fragment of the Web Ontology Language. While ontologies have historically been used to classify at a less granular level, the algorithmic nature of card tricks allows us to transcribe a performer's actions step by step. We conclude by discussing design criteria we have used to ensure the ontology can be accessed and modified with a simple click-and-drag interface. This may allow database searches and performance transcriptions by users with card magic knowledge, but no ontology background.
In 2004, Klavins et al. introduced the use of graph grammars to describe -- and to program -- systems of self-assembly. We show that these graph grammars can be embedded in a graph rewriting characterization of distributed systems that was proposed by Degano and Montanari over twenty years ago. We apply this embedding to generalize Soloveichik and Winfree's local determinism criterion (for achieving a unique terminal assembly), from assembly systems of 4-sided tiles that embed in the plane, to arbitrary graph assembly systems. We present a partial converse of the embedding result, by providing sufficient conditions under which systems of distributed processors can be simulated by graph assembly systems topologically, in the plane, and in 3-space. We conclude by defining a new complexity measure: "surface cost" (essentially the convex hull of the space inhabited by agents at the conclusion of a self-assembled computation). We show that, for growth-bounded graphs, executing a subroutine to find a Maximum Independent Set only increases the surface cost of a self-assembling computation by a constant factor. We obtain this complexity bound by using the simulation results to import the distributed computing notions of "local synchronizer" and "deterministic coin flipping" into self-assembly.
In 2004, Klavins et al. introduced the use of graph grammars to describe -- and to program -- systems of self-assembly. It turns out that these graph grammars are a "dual notion" of a graph rewriting characterization of distributed systems that was proposed by Degano and Montanari over twenty years ago. By applying techniques obtained from this observation, we prove a generalized version of Soloveichik and Winfree's theorem on local determinism, and we also present a canonical method to simulate asynchronous constant-size-message-passing models of distributed computing with systems of self-assembly.
Laboratory investigations have shown that a formal theory of fault-tolerance will be essential to harness nanoscale self-assembly as a medium of computation. Several researchers have voiced an intuition that self-assembly phenomena are related to the field of distributed computing. This paper formalizes some of that intuition. We construct tile assembly systems that are able to simulate the solution of the wait-free consensus problem in some distributed systems. (For potential future work, this may allow binding errors in tile assembly to be analyzed, and managed, with positive results in distributed computing, as a "blockage" in our tile assembly model is analogous to a crash failure in a distributed computing model.) We also define a strengthening of the "traditional" consensus problem, to make explicit an expectation about consensus algorithms that is often implicit in distributed computing literature. We show that solution of this strengthened consensus problem can be simulated by a two-dimensional tile assembly model only for two processes, whereas a three-dimensional tile assembly model can simulate its solution in a distributed system with any number of processes.