在Isabelle中考虑以下设想的语言环境声明示例:
locale x =
fixes f :: "'a ⇒ 'a"
assumes "f ∘ f = f"
locale y = x +
fixes g :: "'a ⇒ 'b"
begin
abbreviation h :: "'a ⇒ 'b" where "h ≡ g ∘ f"
end
此操作失败,因为区域设置'a
中的x
与区域设置'a
中的y
不同。我如何告诉Isabelle g
的参数应该与f
的参数和结果具有相同的类型?