数据类型是否支持常量参数?
Does datatype support constant parameters?
假设我有以下数据类型:
datatype Tree = Genesis | Node(parent:Tree, time: nat)
对于我的应用程序,可以安全地假设 Genesis
是在 time = 0
创建的
是否可以为 Genesis
设置一个名为 time
的参数,它总是某个值,比如 0
?
目前我是这样规避的:
predicate valid(tree: Tree)
{
match tree
case Genesis => true
case Node(parent, time) =>
time > (if parent == Genesis then 0 else parent.time) && valid(parent)
}
但是我想完成这样的事情:
predicate valid(tree: Tree)
{
match tree
case Genesis => true
case Node(parent, time) =>
time > parent.time && valid(parent)
}
任何线索都会有所帮助。谢谢!
无法将常量字段添加到数据类型构造函数。你最好的选择可能是编写一个函数 GetTime(tree: Tree): nat
来包装你的 if
表达式。
如果您提供有关问题的更多背景信息,可能还会有更好的解决方案。
假设我有以下数据类型:
datatype Tree = Genesis | Node(parent:Tree, time: nat)
对于我的应用程序,可以安全地假设 Genesis
是在 time = 0
是否可以为 Genesis
设置一个名为 time
的参数,它总是某个值,比如 0
?
目前我是这样规避的:
predicate valid(tree: Tree)
{
match tree
case Genesis => true
case Node(parent, time) =>
time > (if parent == Genesis then 0 else parent.time) && valid(parent)
}
但是我想完成这样的事情:
predicate valid(tree: Tree)
{
match tree
case Genesis => true
case Node(parent, time) =>
time > parent.time && valid(parent)
}
任何线索都会有所帮助。谢谢!
无法将常量字段添加到数据类型构造函数。你最好的选择可能是编写一个函数 GetTime(tree: Tree): nat
来包装你的 if
表达式。
如果您提供有关问题的更多背景信息,可能还会有更好的解决方案。