我正在尝试编写一个函数,该函数mSmallest
采用两个自然数作为输入n
并m
产生一个向量。输出向量包含具有m
成员的有限集的最小n
成员。
例如mSmallest 5 3
应该产生[FS (FS Z), FS Z, Z]
哪个是Vect 3 (Fin 5)
我想将输入参数限制m
为小于n
. 我试过这样的事情:
mSmallest : (n : Nat) -> (m : Nat) -> {auto p : n > m = True} -> Vect m (Fin n)
mSmallest Z Z = ?c_3
mSmallest Z (S k) = ?c_5
mSmallest (S k) m = ?c_2
由于输入,第二种情况不应该是可能的p
。我如何才能Z (S k)
消除这种情况?
另外,有没有更好的方法来定义mSmallest
函数?