This PR updates various error messages produced by or associated with built-in tactics and adapts their formatting to current conventions.
72 lines
1.9 KiB
Text
72 lines
1.9 KiB
Text
namespace Bug
|
|
|
|
open Nat
|
|
|
|
theorem div_rec_lemma {x y : Nat} : 0 < y ∧ y ≤ x → x - y < x :=
|
|
fun ⟨ypos, ylex⟩ => sub_lt (Nat.lt_of_lt_of_le ypos ylex) ypos
|
|
|
|
protected noncomputable def divCore (x y : Nat) (fuel : Nat) (hfuel : x < fuel): Nat :=
|
|
match fuel with
|
|
| 0 => by contradiction
|
|
| succ fuel =>
|
|
if h : 0 < y ∧ y ≤ x then
|
|
have this := div_rec_lemma h
|
|
Bug.divCore (x - y) y fuel (Nat.lt_of_lt_of_le (div_rec_lemma h) (Nat.le_of_lt_succ hfuel)) + 1
|
|
else
|
|
0
|
|
termination_by structural fuel
|
|
|
|
-- /--
|
|
-- info: { funIndName := `Bug.divCore.induct,
|
|
-- levelMask := #[],
|
|
-- params := #[Lean.Meta.FunIndParamKind.target, Lean.Meta.FunIndParamKind.param, Lean.Meta.FunIndParamKind.target,
|
|
-- Lean.Meta.FunIndParamKind.target] }
|
|
-- -/
|
|
-- #guard_msgs in
|
|
-- run_meta
|
|
-- let some x ← Lean.Meta.getFunIndInfo? false ``Bug.divCore | return
|
|
-- Lean.logInfo m!"{repr x}"
|
|
|
|
/--
|
|
error: Failed: `fail` tactic was invoked
|
|
case case1
|
|
x y fuel x✝ fuel✝ : Nat
|
|
hfuel✝ : x✝ < fuel✝.succ
|
|
h✝ : 0 < y ∧ y ≤ x✝
|
|
this✝ : x✝ - y < x✝
|
|
ih1✝ : Bug.divCore (x✝ - y) y fuel✝ ⋯ = 42
|
|
⊢ Bug.divCore (x✝ - y) y fuel✝ ⋯ + 1 = 42
|
|
|
|
case case2
|
|
x y fuel x✝ fuel✝ : Nat
|
|
hfuel✝ : x✝ < fuel✝.succ
|
|
h✝ : ¬(0 < y ∧ y ≤ x✝)
|
|
⊢ 0 = 42
|
|
-/
|
|
#guard_msgs(error) in
|
|
protected theorem divCore_eq_div : Bug.divCore x y fuel h = 42 := by
|
|
fun_induction Bug.divCore
|
|
fail
|
|
|
|
/--
|
|
error: Failed: `fail` tactic was invoked
|
|
case case1
|
|
x y fuel x✝ fuel✝ : Nat
|
|
hfuel✝ : x✝ < fuel✝.succ
|
|
h✝ : 0 < y ∧ y ≤ x✝
|
|
this✝ : x✝ - y < x✝
|
|
ih1✝ : Bug.divCore (x✝ - y) y fuel✝ ⋯ = 42
|
|
⊢ Bug.divCore (x✝ - y) y fuel✝ ⋯ + 1 = 42
|
|
|
|
case case2
|
|
x y fuel x✝ fuel✝ : Nat
|
|
hfuel✝ : x✝ < fuel✝.succ
|
|
h✝ : ¬(0 < y ∧ y ≤ x✝)
|
|
⊢ 0 = 42
|
|
-/
|
|
#guard_msgs in
|
|
protected theorem divCore_eq_div' : Bug.divCore x y fuel h = 42 := by
|
|
induction x, fuel, h using Bug.divCore.induct_unfolding y
|
|
fail
|
|
|
|
end Bug
|