Documentation

Lean.Meta.Tactic.Grind.Split

Instances For
    Instances For
      Instances For

        Returns case-split candidates. Case-splits that are tagged as .resolved or .notReady are skipped. Applies additional filter if provided. If candidates? is provided, it is used instead of the candidates stored in the goal.

        Instances For

          Anchor reference for a case-split candidate in generated tactic scripts. ordinal is the 0-based position of the candidate among the (ready) candidates whose anchors share the same displayed prefix. Distinct candidates may have identical anchors (e.g., candidates that differ only in inaccessible variables), and the ordinal is used to disambiguate them.

          Instances For

            Computes the anchor reference information for the case-split candidate c. The candidate list must be the one stored in the goal before the case-split is selected and performed (i.e., before selectNextSplit? prunes the list and before c is marked as resolved), so that it matches the list inspected by the cases tactic when replaying the generated script.

            Instances For

              Creates the anchor reference syntax for the result of mkSplitAnchorRefInfo.

              Instances For
                Instances For
                  def Lean.Meta.Grind.Action.splitCore (c : SplitInfo) (numCases : Nat) (isRec stopAtFirstFailure compress : Bool) (candidates? : Option (List SplitInfo) := none) :

                  Performs a case-split using c. Remark: numCases and isRec are computed using checkSplitStatus.

                  Instances For
                    def Lean.Meta.Grind.Action.splitNext (stopAtFirstFailure compress : Bool := true) :

                    Selects a case-split from the list of candidates, performs the split and applies continuation to all subgoals. If a subgoal is solved without using new hypotheses, closes the original goal using this proof. That is, it performs non-chronological backtracking.

                    If stopsAtFirstFailure = true, it stops the search as soon as the given continuation cannot solve a subgoal.

                    If compress = true, then it uses <;> to generate the resulting tactic sequence if all subgoal sequences are identical. For example, suppose that the following sequence is generated with compress = false

                    cases #50fc
                    next => lia
                    next => lia
                    

                    Then with compress = true it generates cases #50fc <;> lia

                    Instances For