在 Isabelle 中将前 n 个自然数的列表写为整数
Writing the list of first n natural numbers as ints in Isabelle
我需要一个描述范围的列表,例如:
[0..<length P]
但是它的类型是 nat list
。我稍后需要它的类型是 int list
.
如何进行这样的转换?
最简单的方法可能是map int [0..<length p]
。事实上,如果你只是写下 [0..<length p]
Isabelle 可能会自动将其作为强制插入。
有点遗憾的是这个符号只存在于nat
;我想它根本不经常使用。集合的等效表示法({a..<b}
等)更加灵活。
还有 List.upto
具有特殊语法 [m..n]
以生成从 m
到 [=26] 的整数列表(类型 int list
) =] n
(下限和上限都包括在内)。
所以在你的情况下我可能会使用
[0 .. int (length xs) - 1]
(请注意,对于 length
的结果,您仍然需要从 nat
转换为 int
。
我需要一个描述范围的列表,例如:
[0..<length P]
但是它的类型是 nat list
。我稍后需要它的类型是 int list
.
如何进行这样的转换?
最简单的方法可能是map int [0..<length p]
。事实上,如果你只是写下 [0..<length p]
Isabelle 可能会自动将其作为强制插入。
有点遗憾的是这个符号只存在于nat
;我想它根本不经常使用。集合的等效表示法({a..<b}
等)更加灵活。
还有 List.upto
具有特殊语法 [m..n]
以生成从 m
到 [=26] 的整数列表(类型 int list
) =] n
(下限和上限都包括在内)。
所以在你的情况下我可能会使用
[0 .. int (length xs) - 1]
(请注意,对于 length
的结果,您仍然需要从 nat
转换为 int
。