Okay. Some time with a pad of paper and some Dew has produced the following rough outline of subroutines:

- included -- takes the incoming value and returns firing rules and percentages of inclusion in a hash
- fire -- takes that hash and returns the graph points for the resulting rule intersection

I'm already working out a sub called get_midpoint that takes an incoming set of graph points and produces the X value of the vertical line that would divide the shape defined by the set of graph points into two equally large shapes.

Those three combined will take the value from a set of firing rules to a graph to a final scalar value.