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 #

Evaluate ground (fully concrete) terms.

Instances For

    Simplify telescope binders but not the final body.

    Instances For

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

      Instances For

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

        Instances For

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

          Instances For

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

            Instances For

              Recursive simplification (calls the full simplifier).

              Instances For

                Identity simproc (no simplification).

                Instances For

                  Apply a, then apply b to the result.

                  Instances For

                    Try a, if no progress try b.

                    Instances For

                      Parenthesized simproc expression.

                      Instances For

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

                        Instances For

                          No discharge. Only unconditional rewrites will apply.

                          Instances For

                            Parenthesized discharger expression.

                            Instances For

                              register_sym_simp command #

                              Declares a named Sym.simp variant with pre/post simproc chains and optional config overrides.

                              register_sym_simp myVariant where
                                pre  := telescope
                                post := ground >> rewrite mySet with self
                              

                              Pre-processing simproc chain.

                              Instances For

                                Post-processing simproc chain.

                                Instances For

                                  Maximum number of simplification steps.

                                  Instances For

                                    Maximum depth of recursive discharge attempts.

                                    Instances For

                                      Register a named Sym.simp variant.

                                      register_sym_simp myVariant where
                                        pre  := telescope
                                        post := ground >> rewrite [thm1, thm2] with self
                                        maxSteps := 50000
                                      
                                      Instances For