在我的彩色 Petri 网模型中,我想以一种地方可以接收两种不同类型的“请求”的方式使用联合。
我有以下声明:
colset AUTHENTICATION = product INT * STRING;
colset REQUEST_PUB = product AUTHENTICATION * STRING * REAL;
colset REQUEST_SUB = product AUTHENTICATION * STRING * INT;
colset REQUEST_PUBSUB = union REQUEST_PUB + REQUEST_SUB;
我有以下配置:
过渡 ------> 地点 (REQUEST_PUBSUB) <----- 过渡
右转换正在发送((int, string), string, real)
,左转换正在发送((int, string), string, int)
。由于 place 是类型REQUEST_PUBSUB
,它是 and 的联合REQUEST_PUB
,REQUEST_SUB
理论上这应该有效, once((int, string), string, real)
显然是有效的REQUEST_PUB
并且((int, string), string, int)
显然是有效的REQUEST_SUB
。
但这不起作用,我收到以下错误:
错误:表达式不匹配约束 [tycon mismatch]
表达式:(INT * STRING) * STRING * REAL
约束:REQUEST_PUBSUB ms
表达式 ((int, string), string, real): REQUEST_PUBSUB ms
详细失败
和
错误:表达式不匹配约束 [tycon mismatch]
表达式:(INT * STRING) * STRING * INT
约束:REQUEST_PUBSUB ms
表达式 ((int, string), string, int): REQUEST_PUBSUB ms
详细失败
谁能帮我这个?我认为描述很清楚,但如有必要,我可以补充更多信息。