What are these fish doing?

At the level of detail we're interested in, each fish considers where it is, where the shark is, and decides where to move next. The shark does the same thing looking for the fish. Here's an illustration:

What do we need to know to start simulating this? Knowing only the initial position of the fish is insufficient, as to calculate the next position of the fish we need to know the position of the shark. The same can be said about knowing only the initial position of the shark. So, to simulate this system we need to know the initial position of the fish and shark.

Now its night time. These fish are avoiding the dots, but they can't see very well.

Each fish considers where it is, what dots are in its vision, and decides where to move next. The dots consider where they are and don't move. Determining what dots are in a fish's vision requires knowing where the fish is and where the dots are. Here's an illustration:

What do we need to know to start simulating this? Like before, the initial positions of the fish and dots.

But what if we also provide the initial vision\text{vision}? If it isn't consistent with the initial position of the fish, the system will behave strangely. The drawing below shows a fish who's vision isn't initialized at the correct position.

I was employed this summer (2024) formally analyzing systems like these. Given a drawing like the ones above:

  1. When are the initial values sufficient to execute it?
  2. What initial values can lead to inconsistencies?
  3. How can a drawing like the ones above be executed efficiently by a computer program?

Answering these turned out to be surprisingly difficult. If you're curious, you can read the Work™️ here.

Thanks Zargham, Carolina, Jamsheed, Orion, Emanuel, Tonya, Jarod, Moses, and Ally for conversation and critique.