File: .lake/packages/lean4/src/lean/Init/WFTactics.lean

full_name: tacticSimp_wf
code: macro "simp_wf" : tactic =>
  `(tactic| try simp (config := { unfoldPartialApp := true, zetaDelta := true }) [invImage, InvImage, Prod.lex, sizeOfWFRel, measure, Nat.lt_wfRel, WellFoundedRelation.rel])
goal: Lean.ParserDescr

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticSimp_wf_1»
code: macro "simp_wf" : tactic =>
  `(tactic| try simp (config := { unfoldPartialApp := true, zetaDelta := true }) [invImage, InvImage, Prod.lex, sizeOfWFRel, measure, Nat.lt_wfRel, WellFoundedRelation.rel])
goal: Lean.Macro

full_name: tacticDecreasing_trivial
code: /-- Extensible helper tactic for `decreasing_tactic`. This handles the "base case"
reasoning after applying lexicographic order lemmas.
It can be extended by adding more macro definitions, e.g.
```
macro_rules | `(tactic| decreasing_trivial) => `(tactic| linarith)
```
-/
syntax "decreasing_trivial" : tactic
goal: Lean.ParserDescr

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_1»
code: macro_rules | `(tactic| decreasing_trivial) => `(tactic| (simp (config := { arith := true, failIfUnchanged := false })) <;> done)
goal: Lean.Macro

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_2»
code: macro_rules | `(tactic| decreasing_trivial) => `(tactic| omega)
goal: Lean.Macro

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_3»
code: macro_rules | `(tactic| decreasing_trivial) => `(tactic| assumption)
goal: Lean.Macro

full_name: tacticDecreasing_trivial_pre_omega
code: /--
Variant of `decreasing_trivial` that does not use `omega`, intended to be used in core modules
before `omega` is available.
-/
syntax "decreasing_trivial_pre_omega" : tactic
goal: Lean.ParserDescr

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_pre_omega_1»
code: macro_rules | `(tactic| decreasing_trivial_pre_omega) => `(tactic| apply Nat.sub_succ_lt_self; assumption)
goal: Lean.Macro

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_pre_omega_2»
code: macro_rules | `(tactic| decreasing_trivial_pre_omega) => `(tactic| apply Nat.pred_lt_of_lt; assumption)
goal: Lean.Macro

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_trivial_pre_omega_3»
code: macro_rules | `(tactic| decreasing_trivial_pre_omega) => `(tactic| apply Nat.pred_lt; assumption)
goal: Lean.Macro

full_name: tacticDecreasing_with_
code: macro "decreasing_with " ts:tacticSeq : tactic =>
 `(tactic|
   (simp_wf
    repeat (first | apply Prod.Lex.right | apply Prod.Lex.left)
    repeat (first | apply PSigma.Lex.right | apply PSigma.Lex.left)
    first
    | done
    | $ts
    | fail "failed to prove termination, possible solutions:
  - Use `have`-expressions to prove the remaining goals
  - Use `termination_by` to specify a different well-founded relation
  - Use `decreasing_by` to specify your own tactic for discharging this kind of goal"))
goal: Lean.ParserDescr

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_with__1»
code: macro "decreasing_with " ts:tacticSeq : tactic =>
 `(tactic|
   (simp_wf
    repeat (first | apply Prod.Lex.right | apply Prod.Lex.left)
    repeat (first | apply PSigma.Lex.right | apply PSigma.Lex.left)
    first
    | done
    | $ts
    | fail "failed to prove termination, possible solutions:
  - Use `have`-expressions to prove the remaining goals
  - Use `termination_by` to specify a different well-founded relation
  - Use `decreasing_by` to specify your own tactic for discharging this kind of goal"))
goal: Lean.Macro

full_name: tacticDecreasing_tactic
code: macro "decreasing_tactic" : tactic =>
  `(tactic| decreasing_with first | decreasing_trivial | subst_vars; decreasing_trivial)
goal: Lean.ParserDescr

full_name: «_aux_.lake_packages_lean4_src_lean_Init_WFTactics___macroRules_tacticDecreasing_tactic_1»
code: macro "decreasing_tactic" : tactic =>
  `(tactic| decreasing_with first | decreasing_trivial | subst_vars; decreasing_trivial)
goal: Lean.Macro