以下定义被精益拒绝:
public static void main (String [] args)
{
ATM theATM;
try
{
Bank theBank = new Bank ();
theBank.readCustomers("src/packageName/customer.txt");
theATM = new ATM (theBank);
}
错误消息 " arg#2;' natlist.cons'不是递归的,但它发生在递归参数之后 "
正如预期的那样接受以下定义:
inductive natlist
| nil : natlist
| cons: natlist → ℕ → natlist
精益执行此订单的原因是什么?
答案 0 :(得分:3)
Lean对归纳类型的实现是基于P. Dybjer(1994)的“归纳家庭”论文:
Backhouse [Bac88]和Coquand和Paulin [COP90]允许在递归前提可能先于非递归前提的情况下进行不必要的推广。我更喜欢在递归之前放置所有非递归前提,因为前者在这里不能依赖后者(但是[Dyb92]中的情况发生了变化)。这种限制简化了方案的表述,并强调了与井订单的关系。
请注意,最近的commit会删除此限制,您的第一个定义现在可以使用。