假设我在 Isabelle/HOL 中有以下表达式:
typedecl Person
typedecl Car
consts age :: "Person ⇒ int"
consts drives ::"(Person × Car) set"
consts owns ::"(Person × Car) set"
这应该为 Person 和 Car 类型建模,它们之间有两个关系,命名为 drive 和 owns,还有 Person 的 age 属性。
我想说每个有车的人肯定会开车,而且开车的人都大于17岁,所以限制条件:
(∀a. a ∈ owns ⟶ a ∈ drives)
(∀d ∈ drives. age (fst d) > 17)
在 Isabelle 中定义此类约束的最佳方法是什么,从某种意义上说,假设这些约束成立,我可以证明模型的某些属性?