CIF to Supremica transformation does not correctly transform multiple guards on an edge
This CIF edge:
edge e when p1.c = 1, not b do b := true;
Leads to the following Supremica XML code:
...
<GuardActionBlock>
<Guards>
<BinaryExpression Operator="==">
<SimpleIdentifier Name="p1:c"/>
<IntConstant Value="1"/>
</BinaryExpression>
<UnaryExpression Operator="!">
<SimpleIdentifier Name="p2:b"/>
</UnaryExpression>
</Guards>
<Actions>
<BinaryExpression Operator="=">
<SimpleIdentifier Name="p2:b"/>
<IntConstant Value="1"/>
</BinaryExpression>
</Actions>
</GuardActionBlock>
...
The Guards
has multiple predicates. However, Supremica only shows one of them:
And editing the edge shows that only the first guard is actually present:
It seems multiple guards are actually not supported. We should wrap a conjunction around it.