lean4-htt/tests/lean/run/issue5027.lean
Joachim Breitner ac64cfd70a
fix: array_get_dec etc. tactics to solve more cases (#5037)
Using `Nat.lt_trans` is too restrictive, and using `Nat.lt_of_lt_of_le`
should make this tactic prove more goals.

This fixes a regression probably introduced by #3991; at least in some
cases before that `apply sizeOf_get` would have solved the goal here.
And it’s true that this is now subsumed by `simp`, but because of the
order that `macro_rules` are tried, the too restrictive variant with
`Nat.lt_trans` would be tried before `simp`, without backtracking.

Fixes #5027
2024-08-14 12:41:14 +00:00

16 lines
488 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

inductive Term (α: Type): Type where
| Composite : Array (Term α) → Term α
| Atom: α → Term α
-- height of a term
def height (f: Term α): Nat :=
let rec max_height (a: Array (Term α)) (i: Nat) (m: Nat): Nat :=
if h: i < a.size then
-- The recusive call to height used to fail because of a too weak
-- array_get_dec
max_height a (i + 1) (max (height a[i]) m)
else
m
match f with
| .Composite a => 1 + max_height a 0 0
| .Atom _ => 1