我试图在Isabelle / HOL中定义Hoare逻辑的有效四倍⊨{P} c×c'{Q},其中c和c'是命令,P和Q是断言。断言定义为:
type_synonym assn = "state × state ⇒ bool"
我已将有效四元组定义如下:
definition
rel_hoare_valid :: "assn ⇒ com × com ⇒ assn ⇒ bool" ("⊨ {(1_)}/ (_)/ {(1_)}" 50)
where "⊨ {P}c×c'{Q} = ..."
...包含其余的代码,这是不相关的。
我知道语法注释部分
("⊨ {(1_)}/ (_)/ {(1_)}" 50)
不正确,但我不知道如何修复它。
错误消息如下:
Type unification failed: Clash of types "_ set" and "_ × _"
Type error in application: incompatible operand type
Operator: rel_hoare_valid P :: com × com ⇒ ((char list ⇒ int) × (char
list ⇒ int) ⇒ bool) ⇒ bool
Operand: c × c' :: (??'a × ??'b) set