合金新手。我正在尝试建立一个包含用户和一些医疗信息的医疗数据库。
sig User{
name: one String,
surname: one String,
socialNumber: one String,
address: one String,
age: one Int,
registration: one UserCredential,
healthStatus: one HealthInformation
}{
age>0
}
sig UserCredential{
user: one String,
pass: one String,
mail: one String
}
sig HealthInformation{}
sig Data4Help{
users: some User,
}
pred show(d:Data4Help){
#d.users>1
}
run show for 10
分析仪告诉我模型不一致:
执行“ 10人跑步表演” 解算器= sat4j位宽= 4 MaxSeq = 7 SkolemDepth = 1对称= 20 5448个变量。 510个主要变量。 12578条。 16毫秒 找不到实例。谓词可能不一致。 0毫秒。
你们能告诉我为什么吗?我想要的只是将数据库“ Data4Help”链接到某些用户,该关系的定义可能不正确,但我不知道为什么。 谢谢
答案 0 :(得分:1)
问题是Alloy的弦乐有些麻烦。默认情况下,字符串签名定义了一组空原子。如果要在模型中使用字符串,则必须使用“您自己的字符串”填充该集合。
请参见How to use String in Alloy?
在模型中,您可以添加一个简单的事实
fact initPoolOfString{
String in "insert"+ "your"+"dummy" + "strings" + "here"
}