Documentation

Duper.Tactic

Produces definional equations for a recursor recVal such as

@Nat.rec m z s (Nat.succ n) = s n (@Nat.rec m z s n)

The returned list contains one equation for each constructor, a proof of the equation, and the contained level parameters.

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

    From a user-provided fact stx, produce a suitable fact, its proof, and a list of universe parameter names

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

        Helper function for collectAssumptions that collects all local decls in the local context that are propositions.

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

          Formulas in Duper are represented as a tuple containing the following:

          • The fact that Duper can use
          • A proof that said fact is true (if the fact is p then second argument of the tuple is a proof of p = True)
          • An array of universe level parameter names
          • A boolean indicating whether the fact came from the original target
          • If the fact is a user-provided non-lctx fact, then the Term that was used to indicate said fact
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            def Duper.removeDuperStar (facts : Lean.Syntax.TSepArray [`Duper.duperStar, `term] ",") :

            Given a Syntax.TSepArray of facts provided by the user (which may include * to indicate that duper should read in the full local context) removeDuperStar returns the Syntax.TSepArray with * removed and a boolean that indicates whether * was included in the original input.

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

              Determines what configuration options Duper should use based on a (potentially partial) set of configuration options passed in by the user. If configuration options are not fully specified, this function gives the following default options:

              • Enables portfolio mode by default unless a portfolio instance is specified
              • Sets the portfolio instance to 0 by default if portfolio mode is explicitly disabled and no instance is specified
              • Sets other options to none by default

              Additionally, this function throws an error if the user attempts to explicitly enable portfolio mode and specify a portfolio instance, and it throws a warning if the user attempts to specify a portfolio instance (other than 0) and additional configuration options.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Duper.getGoalDecls (lctxBeforeIntros lctxAfterIntros : Lean.LocalContext) :

                When duper is called, the first thing the tactic does is call the tactic intros; apply Classical.byContradiction _; intro. Even when * is not included in the duper invocation (meaning the user does not want duper to collect all the facts in the local context), it is necessary to include the negated goal. This negated goal may take the form of arbitrarily many declarations in the local context if the duper is asked to solve a goal of the form p1 → p2 → p3 → ... pn. So to ensure that duper is able to see the whole original goal, getGoalDecls compares the local context before calling intros; apply Classical.byContradiction _; intro and after calling intros; apply Classical.byContradiction _; intro. The local declarations that are part of the latter lctx but not the former are considered goal decls and are to be returned so that Duper can know to collect them in collectAssumptions.

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

                      Note: This tactic exists primarily for internal github testing and is not intended for external use.

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