繁体   English   中英

有没有更好的合金模型树?

[英]Is there a better Alloy model of a tree?

我创建了一棵树的模型。 见下文。 有没有更好的模型? “更好”是指更简单。

sig Node {
    tree: set Node
}

one sig root extends Node {}

fact {
    // No node above root (no node maps to root)
    no tree.root
    // Can reach all nodes from root                
    all n: Node - root | n in root.^tree
    // No node maps to itself (irreflexive) 
    no iden & tree
    // No cycles                    
    no n: Node | Node in n.^tree
    // All nodes are distinct (injective)           
    tree.~tree in iden
}

这有什么不简单的? 您可以简化约束:

sig Node {
    tree: set Node
}

one sig root extends Node {}

pred CostelloTree {
    // No node above root (no node maps to root)
    no tree.root
    // Can reach all nodes from root                
    all n: Node - root | n in root.^tree
    // No node maps to itself (irreflexive) 
    no iden & tree
    // No cycles                    
    no n: Node | Node in n.^tree
    // All nodes are distinct (injective)           
    tree.~tree in iden
}

pred DJTree {
    Node in root.*tree // all reachable
    no iden & ^tree // no cycles
    tree in Node lone -> Node // at most one parent
    }

check {CostelloTree iff DJTree}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM