static BigInt ackermann(BigInt a, BigInt b) { if (a.equals(BigInt.ZERO)) ret plus(b, BigInt.ONE); if (b.equals(BigInt.ZERO)) ret ackermann(a.subtract(BigInt.ONE), BigInt.ONE); ret ackermann(minus(a, BigInt.ONE), ackermann(a, minus(b, BigInt.ONE))); }