Я только начинаю с помощью наборов в Изабелле и у меня есть следующие:Isabelle синтаксис: оператор не типа функции
theory telephone
imports
Main
begin
typedecl NAME
typedecl TELEPHONE
record TelephoneBook =
KNOWN :: " NAME set"
NUMBER :: "(NAME * TELEPHONE) set"
locale telephone_book =
fixes known :: " NAME set"
and number :: "(NAME * TELEPHONE) set"
assumes "known = Domain number"
begin
definition FindBirthday ::
"TelephoneBook => TelephoneBook => NAME => TELEPHONE => bool"
where
"FindTelephone telephonebook telephonebook' name telephone == (
(name \<in> known)
∧
(telephone = number name)
)"
Проблема лежит на линии telephone = number name
, где у меня есть сообщение об ошибке
Type unification failed: Clash of types " _ => _" and "_ set"
Type error in application: operator not of function type
Operator: number :: (NAME × TELEPHONE) set
Operand: name :: NAME
Я пробовал добавленную скобку (telephone = number (name))
или tilda (telephone = number~name)
, но у нее по-прежнему есть та же проблема.
Я знаю, что номер хочет ИМЯ и ТЕЛЕФОН, но я хочу показать, что определение правильное, если вывод telephone
должен быть telephone
, когда name
является его доменом.
Откуда берется «дата»? – larsrh
Извините, я скопировал это неправильно. Он должен быть «телефоном» не в день, но я все равно получаю ту же ошибку – lburski