• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
      • Recursion-and-induction
      • Hons-and-memoization
      • Events
      • Parallelism
      • History
      • Programming
      • Operational-semantics
      • Real
      • Start-here
      • Debugging
      • Miscellaneous
      • Output-controls
      • Macros
        • Make-event
        • Defmacro
        • Untranslate-patterns
        • Tc
        • Trans*
        • Macro-aliases-table
        • Macro-args
        • Defabbrev
        • User-defined-functions-table
        • Trans
        • Untranslate-for-execution
        • Add-macro-fn
        • Check-vars-not-free
        • Safe-mode
        • Macro-libraries
          • B*
          • Defunc
          • Fty
            • Deftagsum
            • Defprod
            • Defflexsum
            • Defbitstruct
            • Deflist
            • Defalist
            • Defbyte
            • Deffixequiv
              • Deffixequiv-sk
                • Deffixequiv-sk-implementation
                  • Deffixequiv-sk-lemma-insts-arg
                  • Deffixequiv-sk-lemma-insts-args
                  • Deffixequiv-sk-hints
                    • Deffixequiv-sk-lemma-inst-subst
                    • Deffixequiv-sk-fn
                    • Deffixequiv-sk-macro-definition
                • Fixequiv-hook
                • Set-fixequiv-guard-override
              • Defresult
              • Deffixtype
              • Defoption
              • Fty-discipline
              • Fold
              • Fty-extensions
              • Defsubtype
              • Specific-types
              • Deftypes
              • Defset
              • Defflatsum
              • Deflist-of-len
              • Defbytelist
              • Defomap
              • Fty::basetypes
              • Defvisitors
              • Deffixtype-alias
              • Deffixequiv-sk
                • Deffixequiv-sk-implementation
                  • Deffixequiv-sk-lemma-insts-arg
                  • Deffixequiv-sk-lemma-insts-args
                  • Deffixequiv-sk-hints
                    • Deffixequiv-sk-lemma-inst-subst
                    • Deffixequiv-sk-fn
                    • Deffixequiv-sk-macro-definition
                • Defunit
                • Multicase
                • Deffixequiv-mutual
                • Fty::baselists
                • Def-enumcase
                • Defmap
              • Apt
              • Std/util
              • Defdata
              • Defrstobj
              • Seq
              • Match-tree
              • Defrstobj
              • With-supporters
              • Def-partial-measure
              • Template-subst
              • Soft
              • Defthm-domain
              • Event-macros
              • Def-universal-equiv
              • Def-saved-obligs
              • With-supporters-after
              • Definec
              • Sig
              • Outer-local
              • Data-structures
            • Trans1
            • Defmacro-untouchable
            • Set-duplicate-keys-action
            • Add-macro-alias
            • Magic-macroexpand
            • Defmacroq
            • Trans!
            • Remove-macro-fn
            • Remove-macro-alias
            • Add-binop
            • Untrans-table
            • Trans*-
            • Remove-binop
            • Tcp
            • Tca
          • Mailing-lists
          • Interfacing-tools
        • Macro-libraries
          • B*
          • Defunc
          • Fty
            • Deftagsum
            • Defprod
            • Defflexsum
            • Defbitstruct
            • Deflist
            • Defalist
            • Defbyte
            • Deffixequiv
              • Deffixequiv-sk
                • Deffixequiv-sk-implementation
                  • Deffixequiv-sk-lemma-insts-arg
                  • Deffixequiv-sk-lemma-insts-args
                  • Deffixequiv-sk-hints
                    • Deffixequiv-sk-lemma-inst-subst
                    • Deffixequiv-sk-fn
                    • Deffixequiv-sk-macro-definition
                • Fixequiv-hook
                • Set-fixequiv-guard-override
              • Defresult
              • Deffixtype
              • Defoption
              • Fty-discipline
              • Fold
              • Fty-extensions
              • Defsubtype
              • Specific-types
              • Deftypes
              • Defset
              • Defflatsum
              • Deflist-of-len
              • Defbytelist
              • Defomap
              • Fty::basetypes
              • Defvisitors
              • Deffixtype-alias
              • Deffixequiv-sk
                • Deffixequiv-sk-implementation
                  • Deffixequiv-sk-lemma-insts-arg
                  • Deffixequiv-sk-lemma-insts-args
                  • Deffixequiv-sk-hints
                    • Deffixequiv-sk-lemma-inst-subst
                    • Deffixequiv-sk-fn
                    • Deffixequiv-sk-macro-definition
                • Defunit
                • Multicase
                • Deffixequiv-mutual
                • Fty::baselists
                • Def-enumcase
                • Defmap
              • Apt
              • Std/util
              • Defdata
              • Defrstobj
              • Seq
              • Match-tree
              • Defrstobj
              • With-supporters
              • Def-partial-measure
              • Template-subst
              • Soft
              • Defthm-domain
              • Event-macros
              • Def-universal-equiv
              • Def-saved-obligs
              • With-supporters-after
              • Definec
              • Sig
              • Outer-local
              • Data-structures
            • Interfacing-tools
            • Hardware-verification
            • Software-verification
            • Math
            • Testing-utilities
          • Deffixequiv-sk-implementation

          Deffixequiv-sk-hints

          Generate the hints for deffixequiv.

          Signature
          (deffixequiv-sk-hints fn fn-rule fn-witness bvars args-alist wrld) 
            → 
          hints
          Arguments
          fn — Guard (symbolp fn).
          fn-rule — Guard (symbolp fn-rule).
          fn-witness — Guard (symbolp fn-witness).
          bvars — Guard (symbol-listp bvars).
          args-alist — Guard (acl2::symbol-symbol-alistp args-alist).
          wrld — Guard (plist-worldp wrld).
          Returns
          hints — Type (true-listp hints).

          The hints consist of a :use hints with the lemma instances for all the arguments and an :in-theory hints to enable fn and disable fn-rule.

          Definitions and Theorems

          Function: deffixequiv-sk-hints

          (defun deffixequiv-sk-hints (fn fn-rule
                                          fn-witness bvars args-alist wrld)
           (declare (xargs :guard (and (symbolp fn)
                                       (symbolp fn-rule)
                                       (symbolp fn-witness)
                                       (symbol-listp bvars)
                                       (acl2::symbol-symbol-alistp args-alist)
                                       (plist-worldp wrld))))
           (declare (xargs :guard (not (eq fn-witness 'quote))))
           (let ((__function__ 'deffixequiv-sk-hints))
            (declare (ignorable __function__))
            (b* ((args-names (strip-cars args-alist)))
             (cons
              (cons
                '"Goal"
                (cons ':in-theory
                      (cons (cons 'e/d
                                  (cons (cons fn 'nil)
                                        (cons (cons fn-rule 'nil) 'nil)))
                            (cons ':use
                                  (cons (deffixequiv-sk-lemma-insts-args
                                             fn-rule fn-witness
                                             bvars args-names args-alist wrld)
                                        'nil)))))
              'nil))))

          Theorem: true-listp-of-deffixequiv-sk-hints

          (defthm true-listp-of-deffixequiv-sk-hints
            (b*
             ((hints (deffixequiv-sk-hints fn fn-rule
                                           fn-witness bvars args-alist wrld)))
             (true-listp hints))
            :rule-classes :rewrite)