通过以下定义,我想证明引理without_P
Variable n : nat.
Definition mnnat := {m : nat | m < n}.
Variable f : mnnat -> nat.
Lemma without_P : (exists x : mnnat, True) -> (exists x, forall y, f x <= f y).
引理without_P的意思是:如果你知道(有限的)集合mnnat不是空的,那么在映射到mnnat之后,必须存在一个元素,这是它们中最小的一个。
我们知道是有限的,因为其中有数字,并且在证明的上下文中,我们也知道不是空的,因为前提。
现在“自然/直观地”非空和有限有一些最小的元素(在应用到它的所有元素之后)。 fmnnatmnnatn-1without_Pmnnat(exists x : mnnat, True)mnnatf
目前我被困在下面的点,我想通过归纳继续进行n,这是不允许的。
1 subgoal
n : nat
f : mnnat -> nat
x : nat
H' : x < n
______________________________________(1/1)
exists (y : nat) (H0 : y < n),
forall (y0 : nat) (H1 : y0 < n),
f (exist (fun m : nat => m < n) y H0) <= f (exist (fun m : nat => m < n) y0 H1)
我在这里唯一的想法是断言这样的函数的存在f' : nat -> nat:exists (f' : nat -> nat), forall (x : nat) (H0: x < n), f' (exist (fun m : nat => m < n) x H0) = f x在解决了这个断言之后,我已经通过归纳证明了引理n。我怎样才能证明这个断言?
有没有办法更直接地证明“非空有限集(在应用于f每个元素之后)有最小值”?我目前的道路对于我的 Coq 技能来说似乎太难了。