Since your question is not mainly about programming, Bob, I might be able to help you with it, and I'm surprised to find it here rather than our discussion of "resource theories".

It's a bit late now, so I'm not up to a detailed analysis right this minute, but the way it would work is that I'd grill you and force you to state your ideas very precisely and translate them into category theory.

If the Schedule is generated in a systematic way from the Plan we might have a functor or other systematic thing going on. It's harder for math to capture relationships where something "tries but often fails", but there are various ways to do it.

On a much simpler level, I've explained:

1. Petri nets and (equivalently) reaction networks for processes in which resources are combined to give other resources,

2. Linear programming for helping figure out how to maximize a linear function given linear constraints, and

3. PERT charts for scheduling.

But in fact all three are different fragments of a unified structure: a **timed Petri net**. I'll explain this in a week or so.

So, while I probably don't yet know how to do what you want, there's more to the story than I've managed to explain so far.

It's a bit late now, so I'm not up to a detailed analysis right this minute, but the way it would work is that I'd grill you and force you to state your ideas very precisely and translate them into category theory.

If the Schedule is generated in a systematic way from the Plan we might have a functor or other systematic thing going on. It's harder for math to capture relationships where something "tries but often fails", but there are various ways to do it.

On a much simpler level, I've explained:

1. Petri nets and (equivalently) reaction networks for processes in which resources are combined to give other resources,

2. Linear programming for helping figure out how to maximize a linear function given linear constraints, and

3. PERT charts for scheduling.

But in fact all three are different fragments of a unified structure: a **timed Petri net**. I'll explain this in a week or so.

So, while I probably don't yet know how to do what you want, there's more to the story than I've managed to explain so far.