I think the metaphor is great.

Each tile has a superposition of possible states that collapse into one observed state. That’s all the metaphor is meant to mean, I think.

What are better names?

- Lego Simplices

- Tile Constraint Pairing

- Pipe Fitting

- Cartesian Convolution (nah)

- Finite automata (ok that’s fair, but subthings need names)

I dunno, I think the WFC metaphor works for me. The “wavefunction” is just the finite set of states that have a non-zero probability of being observed.

> Each tile has a superposition of possible states

This is like saying an uninitialized integer has a superposition of all possible values. I find it a very convoluted way of saying "each tile has a set of possible next states" - dragging quantum terms to this is just confusing, in my opinion.

The first definition of this type of procedural generation algorithm was called Model Synthesis by Paul Merrell [1] which built upon texture synthesis. You can even read Merrell's later comparison of the two algorithms [2].

[1] https://paulmerrell.org//thesis.pdf [2] https://paulmerrell.org/wp-content/uploads/2021/07/compariso...

You’re not wrong. I think I initially had higher expectations myself. But as a person who names things, I don’t really find this one to be a huge stretch.

> This is like saying an uninitialized integer has a superposition of all possible values.

Well? Yeah! And I personally like that way of thinking about sets. It maps pretty directly to my understandings of other things in math and physics.

Here's the algorithm described without the quantum nonsense:

1. Analyze Rules: Extract valid patterns (modules) and their compatibility rules (adjacency constraints) from input or define them.

2. Initialize Grid: Create an output grid where each cell initially contains all possible modules (maximum uncertainty).

3. Choose and Assign: Select the cell with the fewest valid modules remaining. Randomly assign one compatible module to it.

4. Propagate Constraints: Update neighboring cells by removing modules incompatible with the newly assigned one. If a cell loses all options, a contradiction occurs.

5. Handle Contradiction: If a contradiction arises, either backtrack to a previous choice or restart the process.

6. Repeat: Continue from step 3 until all cells are assigned a module or an unresolvable contradiction occurs.

Which is essentially how a basic sudoku solver works (which usually only has one solution, as opposed to many)

That's a very long name.

  > Tile Constraint Pairing
This seems pretty solid to me.

Constraint Collapse would be good

Ad hoc Prolog

- Stohastic Sudoku solvers