伊莎贝尔和班级超载

时间:2015-12-17 01:21:02

标签: isabelle

定义了两个包含相同函数的类,但是当在语言环境中使用这两个类时会出现统一错误:

  class c2 =
    fixes getName_b :: "'a ⇒ string"

通过将(getName b)重命名为(getName_b b)并使用类定义来解决统一错误

{{1}}

如果没有重命名,是否存在解决方案?

Here当数据类型为参数时需要重载时,会给出解决方案。

1 个答案:

答案 0 :(得分:1)

可以使用完全或部分限定的标识符。我使用find_consts,如下所示,找到类型类常量的限定名称。

类型推断仅要求我使用c1_class.getName a来消除错误。

theory Scratch
imports Complex_Main
begin
class c1 =
  fixes getName :: "'a => string"

class c2 =
  fixes getName :: "'a => string"

find_consts name: getName (*
  find_consts
  name: "getName"

  found 2 constant(s):
    Scratch.c1_class.getName :: "'a => char list"
    Scratch.c2_class.getName :: "'a => char list"
*)

declare[[show_sorts]]
locale c12 = 
  fixes match :: "('a::c1) => ('b::c2) => bool"
  assumes as : "match a b --> (c1_class.getName a) = (getName b)"

end