Er, right, having read back my post I can see some holes. Let's say we have that small graph C~>A, B~>A, A~>D.
C ->
A -> D
B->
B and C will be "scenario generators" - in the sense that they will generate some "scenario". Lets's have a simple scenario, where A generates 22, and B generates 15. ***
A has some "complicated" operation, something like quotient remainder mod 10. So if we "apply" A to the scenario generated by C, we'd get (2, 2), and for B (1, 5).
"Scenarios" also have some canonical "combine" operation - in this case "addition"... but it's important that inputs are "combined" before processing. So for this "scenario", A(27) = (2, 7).
Now, what happens in D? We need to decide whether to feed it the quotient or remainder. We choose that via as a property of the edge that the "scenario tuple" (7,2) "travels" along.
So if D was quotient / remainder 2, then we'd get either (3, 1) or (1, 0)...depending on whether our edge held a "quotient" or "remainder" property.
Does this clarify what I'm trying to achieve?
Regards,
Simon
*** Really, A and B would generate (22, 0), and B (15, 0)... the edges would select 22 and 15, because it wouldn't make sense to select the "complement" of a "generator"
**** And really really in the domain of interest, there is a 3rd output, which is basically a "report" on the outcome of that particular node, but the "report" is not passed on in the digraph. Ideally, there would be a way to access it however...