More Than One Way to Skin a Cat…

Be aware that LTSA is fickle and will sometimes choose to create different LTSs for FSP specifications that semantically are the same. A very perceptive student discovered this and sent me an e-mail pointing out that this FSP specification:

const N = 1
SUM = (in[a:0..N][b:0..N] -> out[a+b] -> SUM).

produces the following LTS:

Snapz Pro X001

While this FSP specification:

const N = 1
SUM = (in[a:0..N][b:0..N] -> TOTAL[a+b]),
TOTAL[s:0..2*N] = (out[s] -> SUM).

produces the following LTS:

Snapz Pro X003

Despite the different structure of the two LTSs, note that their alphabets are equivalent and the produce the same set of traces. As a resul, they are semantically equal and you should not worry about the fact that these two specifications produce slightly different LTSs.

Note: I am curious too, so I've sent a message to the two Jeffs and I'll be sure to post any response I get from them concerning this issue.

Kenneth M. Anderson, 2009