Lesson 2.1 · Chapter 2: The knot test

The knot test

Erase any variable. Does the binding disappear, or does a smaller constraint survive?

From John Cullen’s knotlab guide

Explore the idea

Erase a variable and inspect what remains

Erasing means forgetting: a visible state is allowed whenever at least one choice of the erased bit completes it. It does not mean setting that bit to zero.

If A and B, then c

ABc

Visible bits: A, B, c

000allowed
001allowed
010allowed
011allowed
100allowed
101allowed
110excluded
111allowed

7 of 8 visible states allowed: a constraint remains.

Original relation: a logical knot—constrained as a whole, free after every erasure.

The atom, parity and not-all-equal relations pass the knot test. A common hub leaves a pairwise implication after one of its inputs is forgotten.

The setting. Read a system of constraints as the set of it allows. Auxiliary "" variables may appear, and are quantified away. Nothing outside the constraints, such as an executor or a scheduler, may supply an input. A verdict depends only on the allowed states, never on how the constraints are written.

Each contributes an open . The is one more variable, c. Erasing a loop forgets it: its variable is no longer by anything.

The test. A over the loops' distinctions and the contact is a when:

  • K1, binding: it is constrained as a whole;
  • K2, loss on erasure: any one variable, a loop's or the contact's, leaves the others ;
  • K3, coexistence: some joint state is allowed (K2 already implies it).

In short: constrained as a whole, unconstrained in every part, like Borromean rings. Forgetting the contact must the loops too, so loops tied directly to each other do not count.

Knots and non-knots. Six relations against the test:

RelationKnot?Why
¬A ∨ ¬B ∨ c (the : if A and B, then c)yesexcludes one state; every pair is free
A ⊕ B ⊕ c = 0 (parity)yesexcludes four states; every pair is free
not-all-equal(A, B, c)yesexcludes 000 and 111; every pair is free
(¬A ∨ c) ∧ (¬B ∨ c) (a common )noforget B, and A still forces c
A ≠ B, with c unusednoforget c, and A and B stay tied
c = A ⊕ B with A fixed truenoA is not open, so it is constrained alone
PYTHONPATH=tools python3 -m knotlab check --cnf "~A ~B c" --loops A B --contact c
PYTHONPATH=tools python3 -m knotlab check --cnf "~A c; ~B c" --loops A B --contact c

The first command reports a knot. The second reports a hub, and explains which binding survives each erasure. Proved (Lean): ForgettingKernel.lean (atom_isKnot, parity_isKnot, hub_not_knot, tied_not_knot).

The complete text is carried over from INTUITIONS.md in knotlab. Its labels distinguish proofs, finite checks, classical results, and interpretation. How to read the labels.

The interactive examples illustrate finite cases. Their behaviour does not replace the general arguments and sources in the text.