Documentation

Batteries.CodeAction.Misc

Miscellaneous code actions #

This declares some basic tactic code actions, using the @[tactic_code_action] API.

Return the syntax stack leading to target from root, if one exists.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Constructs a hole with a kind matching the provided hole elaborator.

    Equations
    Instances For

      Hole code action used to fill in a structure's field when specifying an instance.

      In the following:

      instance : Monad Id := _
      

      invoking the hole code action "Generate a (minimal) skeleton for the structure under construction." produces:

      instance : Monad Id where
        pure := _
        bind := _
      

      and invoking "Generate a (maximal) skeleton for the structure under construction." produces:

      instance : Monad Id where
        map := _
        mapConst := _
        pure := _
        seq := _
        seqLeft := _
        seqRight := _
        bind := _
      
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Returns the explicit arguments given a type. The second argument of this function is an accumulator.

        Equations
        Instances For

          Returns all of the arguments given a type. The second argument of this function is an accumulator.

          Equations
          Instances For

            Invoking hole code action "Generate a list of equations for a recursive definition" in the following:

            def foo : Expr → Unit := _
            

            produces:

            def foo : Expr → Unit := fun
              | .bvar deBruijnIndex => _
              | .fvar fvarId => _
              | .mvar mvarId => _
              | .sort u => _
              | .const declName us => _
              | .app fn arg => _
              | .lam binderName binderType body binderInfo => _
              | .forallE binderName binderType body binderInfo => _
              | .letE declName type value body nonDep => _
              | .lit _ => _
              | .mdata data expr => _
              | .proj typeName idx struct => _
            
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Invoking hole code action "Start a tactic proof" will fill in a hole with by done.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                The "Remove tactics after 'no goals'" code action deletes any tactics following a completed proof.

                example : True := by
                  trivial
                  trivial -- <- remove this, proof is already done
                  rfl
                

                is transformed to

                example : True := by
                  trivial
                
                Equations
                Instances For

                  Similar to getElimExprInfo, but returns the names of binders instead of just the numbers; intended for code actions which need to name the binders.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    Finds the TermInfo for an elaborated term stx.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      Invoking tactic code action "Generate an explicit pattern match for 'induction'" in the following:

                      example (x : Nat) : x = x := by
                        induction x
                      

                      produces:

                      example (x : Nat) : x = x := by
                        induction x with
                        | zero => sorry
                        | succ n ih => sorry
                      

                      It also works for cases.

                      Equations
                      Instances For

                        The "Add subgoals" code action puts · done subgoals for any goals remaining at the end of a proof.

                        example : TrueTrue := by
                          constructor
                          -- <- here
                        

                        is transformed to

                        example : TrueTrue := by
                          constructor
                          · done
                          · done
                        
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The "Add subgoals" code action puts · done subgoals for any goals remaining at the end of a proof.

                          example : TrueTrue := by
                            constructor
                            -- <- here
                          

                          is transformed to

                          example : TrueTrue := by
                            constructor
                            · done
                            · done
                          
                          Equations
                          Instances For

                            The "Add subgoals" code action puts · done subgoals for any goals remaining at the end of a proof.

                            example : TrueTrue := by
                              constructor
                              -- <- here
                            

                            is transformed to

                            example : TrueTrue := by
                              constructor
                              · done
                              · done
                            
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For