Допустим, у меня есть следующий тип данных:
datatype Tree = Genesis | Node(parent:Tree, time: nat)
Для моего приложения можно с уверенностью предположить, что Genesis
был создан в time = 0
Is возможно иметь параметр для 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)
}
Однако я бы хотел бы выполнить sh что-то вроде этого:
predicate valid(tree: Tree)
{
match tree
case Genesis => true
case Node(parent, time) =>
time > parent.time && valid(parent)
}
Любые лиды будут полезны. Спасибо!