### Faculty Member

### Project Image

Knots are mathematical abstractions of objects you probably deal with everyday when you tie your shoes. Formally, a knot is a continuous map from a circle into 3-dimensional space. We consider two knots the same if we can "wiggle" one around until it looks like the other one. (More formally: if they are "ambient isotopic.") An interesting mathematical question is to decide when two knots are the same (or not). One way to do this is to use a "knot invariant," which is any quantity that can be computed from a knot that does not change when you wiggle the knot. Invariants need not be "complete," i.e. sometimes, two different knots have the same invariant. Every finite group G can be used to concoct an invariant of knots called the G-coloring invariant. These are quite powerful invariants, in the sense that usually different knots have different G-coloring invariants. Unfortunately, the more powerful the invariant, the harder it is to compute. This is actually true in a very precise sense that we will explore over the semester: deciding when a knot has a nontrivial G-coloring invariant is NP-complete.

This project consists of two separate but related parts. First, applying results from a previous semester's IGL project, we will build a "computer" that uses colorings of knots to affect computations. (More precisely, we will build a computer program that converts Boolean circuits into knots.) Second, we will build a visualizer for coloring invariants: a computer program that takes a picture of a knot and a finite group, and builds pictures of its various G-colorings. This project should produce some nice pictures, introduce you to some fun topology, and develop your programming experience.

### Team Meetings

### Project Difficulty

### Undergrad Prerequisites

Math 417, especially comfort with finite group theory.

Familiarity with Python is preferable.