thumbnail for Semantics and Scheduling for Machine Knitting Compilers

Semantics and Scheduling for Machine Knitting Compilers

examples of equivalent and non-equivalent knit programs


Machine knitting is a well-established fabrication technique for complex soft objects, and both companies and researchers have developed tools for generating machine knitting patterns. However, existing representations for machine knitted objects are incomplete (do not cover the complete domain of machine knittable objects) or overly specific (do not account for symmetries and equivalences among knitting instruction sequences). This makes it difficult to define correctness in machine knitting, let alone verify the correctness of a given program or program transformation. The major contribution of this work is a formal semantics for knitout, a low-level Domain Specific Language for knitting machines. We accomplish this by using what we call the fenced tangle, which extends concepts from knot theory to allow for a mathematical definition of knitting program equivalence that matches the intuition behind knit objects. Finally, using this formal representation, we prove the correctness of a sequence of rewrite rules; and demonstrate how these rewrite rules can form the foundation for higher-level tasks such as compiling a program for a specific machine and optimizing for time/reliability, all while provably generating the same knit object under our proposed semantics. By establishing formal definitions of correctness, this work provides a strong foundation for compiling and optimizing knit programs.



Jenny Lin, Vidya Narayanan, Yuka Ikarashi, Jonathan Ragan-Kelley, Gilbert Bernstein, and James McCann. 2023. Semantics and Scheduling for Machine Knitting Compilers. ACM Transactions on Graphics 42, 4. Article 143.

author = {Lin, Jenny and Narayanan, Vidya and Ikarashi, Yuka and Ragan-Kelley, Jonathan and Bernstein, Gilbert and McCann, James},
title = {Semantics and Scheduling for Machine Knitting Compilers},
year = {2023},
issue_date = {August 2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {42},
number = {4},
issn = {0730-0301},
url = {},
doi = {10.1145/3592449},
journal = {ACM Trans. Graph.},
month = {jul},
articleno = {143},
numpages = {26},