Sebastian mentioned that the use of the kernel defeq was to work around
a performance issue that was fixed since. Let's see if we can do
without.
This is also a semantic change: Ground terms (no free vars, no mvars)
are reduced at
“all” transparency even if the the transparency setting is default. This
was the case
even before 03f6b87647 switched to the
kernel defeq
checking for performance. It seems that this is rather surprising
behavior from the user
point of view. The fallout on batteries and mathlib is rather limited,
only a few
`rfl` proofs seem to have (inadvertently or not) have relied on this.
The speedcenter reports no significant regressions on core or mathlib.
27 lines
915 B
Text
27 lines
915 B
Text
def ack : Nat → Nat → Nat
|
|
| 0, y => y+1
|
|
| x+1, 0 => ack x 1
|
|
| x+1, y+1 => ack x (ack (x+1) y)
|
|
termination_by a b => (a, b)
|
|
|
|
/--
|
|
info: [reduction] unfolded declarations (max: 1725, num: 4):
|
|
[reduction] Nat.rec ↦ 1725
|
|
[reduction] Eq.rec ↦ 1114
|
|
[reduction] Acc.rec ↦ 1050
|
|
[reduction] PSigma.rec ↦ 513[reduction] unfolded reducible declarations (max: 1577, num: 3):
|
|
[reduction] Nat.casesOn ↦ 1577
|
|
[reduction] Eq.ndrec ↦ 984
|
|
[reduction] PSigma.casesOn ↦ 513[kernel] unfolded declarations (max: 1193, num: 5):
|
|
[kernel] Nat.casesOn ↦ 1193
|
|
[kernel] Nat.rec ↦ 1065
|
|
[kernel] Eq.ndrec ↦ 973
|
|
[kernel] Eq.rec ↦ 973
|
|
[kernel] Acc.rec ↦ 754use `set_option diagnostics.threshold <num>` to control threshold for reporting counters
|
|
-/
|
|
#guard_msgs in
|
|
unseal ack in
|
|
set_option diagnostics.threshold 500 in
|
|
set_option diagnostics true in
|
|
theorem ex : ack 3 2 = 29 :=
|
|
rfl
|