我有一个关系R :: w => w => bool既是传递的又是反身的。
我有公理Ax1:“有限{x :: w。真}}”。因此,对于每个x,总是有一个最长的序列wn R ... R w2 R w1 R x。
我需要一个函数F :: w => nat,对于给定的x - 返回该序列的“长度”(如果没有y,则为0),即xRy。我将如何在伊莎贝尔建造一座。
另外:Ax1是一种公理化“w型有限性”的好方法,还是有更好的方法?
答案 0 :(得分:1)
首先,更为惯用的撰写{x::w. True}
的方式是UNIV :: w set
。我建议编写finite (UNIV :: w set)
,或者可能使用finite
类型类,但这可能会使您的定理更难应用,因为您的类型需要finite
实例。我认为这对您的用例并不是真正必要或有用。
然后我建议采用以下方法:
在类型inductive
的列表上定义归纳谓词(使用w list
),表明第一个元素是x
,并且每两个连续的列表元素y
并且z
,R y z
成立,即列表是升序链R
。
显示任何此类链的列表必须具有不同的元素(参见distinct :: 'a list ⇒ bool
)。
显示有限集上有多少distinct
个列表。
使用Max
运算符查找最大的n
,以便存在一个长度为n
的列表,该列表是w.r.t的升序链。 R
。这项工作应该很容易,因为至少有一条这样的链条,你已经证明只有有限的链条。