Isabelle函数用于查找关系中最长的成员序列
我有一个关系R::w=>w=>bool,它既是传递的又是不可逆的 我有Ax1公理:“有限{x::w.True}”。因此,对于每个x,总是有一个最长的wn R序列。。。Rw2 Rw1 Rx 我需要一个函数F::w=>nat,对于给定的x,它返回这个序列的“lenght”(如果没有y,则返回0,从而返回xRy)。我该如何在伊莎贝尔建造一座Isabelle函数用于查找关系中最长的成员序列,isabelle,Isabelle,我有一个关系R::w=>w=>bool,它既是传递的又是不可逆的 我有Ax1公理:“有限{x::w.True}”。因此,对于每个x,总是有一个最长的wn R序列。。。Rw2 Rw1 Rx 我需要一个函数F::w=>nat,对于给定的x,它返回这个序列的“lenght”(如果没有y,则返回0,从而返回xRy)。我该如何在伊莎贝尔建造一座 另外:Ax1是将“w类型的有限性”公理化的一个好方法还是有更好的方法?首先,编写{x::w.True}的一种更惯用的方法是UNIV::w set。我建议编写fin
另外:Ax1是将“w类型的有限性”公理化的一个好方法还是有更好的方法?首先,编写
{x::w.True}
的一种更惯用的方法是UNIV::w set
。我建议编写finite(UNIV::w set)
,或者可能使用finite
type类,尽管这可能会使您的定理更难应用,因为您的类型需要finite
实例。我认为这对您的用例来说并不是真的必要或有用
然后,我建议采取以下方法:
w list
类型的列表上定义一个归纳谓词(使用inclusive
),说明第一个元素是x
,对于每两个连续的列表元素y
和z
,ryz
保持不变,即列表是一个升序链w.R.t.R
distinct::'列表⇒ bool
)列表
Max
运算符查找最大的n
,以便存在一个长度n
列表,该列表是一个升序链w.r.t.r
。这样做应该很容易,因为至少有一条这样的链,而且您已经证明了只有有限多条链感谢您在周日抽出时间回答。你对如何有效地证明3有什么建议吗。?我觉得这应该是相对容易的,但我不太明白如何最好地做到这一点。那么,你会如何非正式地在纸上做到这一点?