Я хотел бы сделать список datatype экземпляром poset из Porder.thy в HOLCF. Моя попытка выглядит следующим образом:Предоставление списка частичного заказа в Isabelle/HOLCF
theory Scratch
imports Porder Representable
begin
datatype 'a myList =
Nil |
Cons 'a "'a myList"
instantiation myList :: (below) below
begin
definition below_list_def:
"(x ⊑ y) = (case x of Nil ⇒ True |
Cons a xs ⇒ (case y of Nil ⇒ False |
Cons b ys ⇒ a ⊑ b ∧ xs ⊑ ys))"
instance ..
end
Я понимаю, что «определение» не поддерживает рекурсивное определение я использую, и я должен использовать что-то вроде «удовольствие» или «fixrec». Однако я не знаю, как использовать эти команды в этом контексте. Каждый пример, который я нашел в Интернете для создания экземпляра po, использует нерекурсивный тип данных. Каков наилучший способ сделать рекурсивный тип данных экземпляром ниже и po?