我试图用比普通英文句子更正式的方式表达规则,希望能得到一些关于使用命题方法和某种二元决策树来展示规则的指导。
假设指定区域外的物体需要处于特定状态(比如redState
)才被认为是safe
。用普通英文句子表达为:
如果物体在ZoneA之外并且处于RedState,则它是安全的,
然而,在某些情况下,物体可能免于这一限制:
如果物体在ZoneA之外,不处于RedState并且是Exempt,则它是安全的。
如果物体在ZoneA之外,不处于RedState并且不是Exempt,则它是不安全的。
物体是否在Zone A内处于红色状态并不重要。剩下的规则是:
如果物体包含在Zone A内,则它是安全的。
使用命题公式,我认为这些规则可以表达为
¬
InZoneA
∧RedState
⇒Safe
¬
InZoneA
∧ ¬RedState
∧Exempt
⇒Safe
¬
InZoneA
∧ ¬RedState
∧ ¬Exempt
⇒ ¬Safe
InZoneA ⇒
Safe
我查阅了一些系统规范方法(如Z),但我更感兴趣的是传达规则的简洁概念,而不是确保它们在一个更大的系统中正常运作。因此,我考虑将它们表示为一种二元决策树(图)。我读了一些关于这个主题的笔记,但对于是否使用它们是最佳方法,或者我是否在误用它们,我有点不确定。我对这些规则得出的表示如图所示,其中实线表示True
,虚线表示False
。
我非常希望得到您的反馈,了解这种表示是否正确,或者我的方法/思考是否有误。非常感谢!
回答:
据我所知,你展示的内容是正确的。
然而,你可能还需要考虑其他一些事情。
例如,如果Exempt在任何级别都可用,可能希望在评估其他任何东西之前先评估它,它不依赖于任何东西,也没有东西依赖于它。这样可以节省时间,不必评估任何其他不会影响结果的属性。