Documentation

Init.Sym.Simp.SimprocDSL

Simproc and Discharger DSLs for Sym.simp #

Simproc DSL (sym_simproc) #

A syntax category for specifying pre and post simproc chains in Sym.simp variants.

Primitives #

Combinators #

Discharger DSL (sym_discharger) #

A syntax category for specifying dischargers used in the with clause of rewrite. Dischargers attempt to prove side conditions of conditional rewrite rules.

Primitives #

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

      Evaluate ground (fully concrete) terms.

      Equations
      Instances For

        Simplify telescope binders but not the final body.

        Equations
        Instances For

          Simplify control-flow expressions (if-then-else, match, cond, dite). Visits only conditions and discriminants. Intended as a pre simproc.

          Equations
          Instances For

            Simplify arrow telescopes (p₁ → p₂ → ... → q) without entering binders. Simplifies each pᵢ and q individually. Intended as a pre simproc.

            Equations
            Instances For

              Rewrite using a named theorem set. Optionally specify a discharger for conditional rewrites.

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

                Rewrite using inline theorems. Optionally specify a discharger for conditional rewrites.

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

                  Normalize ring and semiring terms into polynomial normal form (Sym.Arith.normalize?). Simplifies the atoms recursively. Intended as a pre simproc. The optional discharger proves the side conditions x ≠ 0 under which x * x⁻¹ is cancelled in a field.

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

                    Recursive simplification (calls the full simplifier).

                    Equations
                    Instances For

                      Identity simproc (no simplification).

                      Equations
                      Instances For

                        Apply a, then apply b to the result.

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

                          Try a, if no progress try b.

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

                            Parenthesized simproc expression.

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

                              Recursive simplifier discharge. Calls the full simplifier to prove side conditions.

                              Equations
                              Instances For

                                No discharge. Only unconditional rewrites will apply.

                                Equations
                                Instances For

                                  Parenthesized discharger expression.

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

                                    Calls grind to prove side conditions. The goal's internalized hypotheses (hypotheses are internalized when the sym => block starts and by tactics such as intro and internalize) are shared across discharge attempts; the remaining local declarations (e.g., introduced by Sym.simp when entering binders) are internalized on each attempt.

                                    Equations
                                    Instances For

                                      register_sym_simp command #

                                      Declares a named Sym.simp variant with pre/post simproc chains, the discharger for the extra theorems provided at use time (simp myVariant [thm₁, thm₂, ...]), and optional config overrides.

                                      register_sym_simp myVariant where
                                        pre  := telescope
                                        post := ground >> rewrite mySet with self
                                        discharger := grind
                                      
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For

                                        Pre-processing simproc chain.

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

                                          Post-processing simproc chain.

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

                                            Discharger for the side conditions of the extra theorems provided at use time (simp myVariant [thm₁, thm₂, ...]). Defaults to none.

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

                                              Maximum number of simplification steps.

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

                                                Maximum depth of recursive discharge attempts.

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

                                                  Register a named Sym.simp variant.

                                                  register_sym_simp myVariant where
                                                    pre  := telescope
                                                    post := ground >> rewrite [thm1, thm2] with self
                                                    discharger := grind
                                                    maxSteps := 50000
                                                  
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For