• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
      • Break-rewrite
      • Proof-builder
      • Accumulated-persistence
      • Cgen
        • Defdata
        • Test?
        • ACL2s-defaults
        • Prove/cgen
        • Register-type
        • With-timeout
        • Defdata-attach
          • Testing-enabled
          • Defdata-aliasing-enabled
          • Cgen-single-test-timeout
          • Verbosity-level
          • Search-strategy
          • Num-print-counterexamples
          • Cgen-timeout
          • Cgen-local-timeout
          • Num-witnesses
          • Num-trials
          • Num-print-witnesses
          • Test-then-skip-proofs
          • Sampling-method
          • Recursively-fix
          • Num-counterexamples
          • Backtrack-limit
          • Print-cgen-summary
          • Cgen::flush
          • Backtrack-bad-generalizations
          • Use-fixers
          • Thm-no-test
          • Defthmd-no-test
          • Defthm-no-test
        • Forward-chaining-reports
        • Proof-tree
        • Print-gv
        • Dmr
        • With-brr-data
        • Splitter
        • Guard-debug
        • Set-debugger-enable
        • Redo-flat
        • Time-tracker
        • Set-check-invariant-risk
        • Removable-runes
        • Efficiency
        • Explain-near-miss
        • Tail-biting
        • Failed-forcing
        • Sneaky
        • Invariant-risk
        • Failure
        • Measure-debug
        • Dead-events
        • Compare-objects
        • Prettygoals
        • Remove-hyps
        • Type-prescription-debugging
        • Pstack
        • Trace
        • Set-register-invariant-risk
        • Walkabout
        • Disassemble$
        • Nil-goal
        • Cw-gstack
        • Set-guard-msg
        • Find-lemmas
        • Watch
        • Quick-and-dirty-subsumption-replacement-step
        • Profile-all
        • Profile-ACL2
        • Set-print-gv-defaults
        • Minimal-runes
        • Spacewalk
        • Try-gl-concls
        • Near-misses
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
        • Theories
        • Rule-classes
        • Proof-builder
        • Recursion-and-induction
        • Hons-and-memoization
        • Events
        • Parallelism
        • History
        • Programming
        • Operational-semantics
        • Real
        • Start-here
        • Debugging
          • Break-rewrite
          • Proof-builder
          • Accumulated-persistence
          • Cgen
            • Defdata
            • Test?
            • ACL2s-defaults
            • Prove/cgen
            • Register-type
            • With-timeout
            • Defdata-attach
              • Testing-enabled
              • Defdata-aliasing-enabled
              • Cgen-single-test-timeout
              • Verbosity-level
              • Search-strategy
              • Num-print-counterexamples
              • Cgen-timeout
              • Cgen-local-timeout
              • Num-witnesses
              • Num-trials
              • Num-print-witnesses
              • Test-then-skip-proofs
              • Sampling-method
              • Recursively-fix
              • Num-counterexamples
              • Backtrack-limit
              • Print-cgen-summary
              • Cgen::flush
              • Backtrack-bad-generalizations
              • Use-fixers
              • Thm-no-test
              • Defthmd-no-test
              • Defthm-no-test
            • Forward-chaining-reports
            • Proof-tree
            • Print-gv
            • Dmr
            • With-brr-data
            • Splitter
            • Guard-debug
            • Set-debugger-enable
            • Redo-flat
            • Time-tracker
            • Set-check-invariant-risk
            • Removable-runes
            • Efficiency
            • Explain-near-miss
            • Tail-biting
            • Failed-forcing
            • Sneaky
            • Invariant-risk
            • Failure
            • Measure-debug
            • Dead-events
            • Compare-objects
            • Prettygoals
            • Remove-hyps
            • Type-prescription-debugging
            • Pstack
            • Trace
            • Set-register-invariant-risk
            • Walkabout
            • Disassemble$
            • Nil-goal
            • Cw-gstack
            • Set-guard-msg
            • Find-lemmas
            • Watch
            • Quick-and-dirty-subsumption-replacement-step
            • Profile-all
            • Profile-ACL2
            • Set-print-gv-defaults
            • Minimal-runes
            • Spacewalk
            • Try-gl-concls
            • Near-misses
          • Miscellaneous
          • Output-controls
          • Macros
          • Interfacing-tools
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Defdata
      • Cgen

      Defdata-attach

      Attach/modify metadata for a defdata type

      Examples:

      (defdata-attach pos :enumerator nth-small-pos-testing)
      
      (defdata-attach imem :enum/acc imem-custom-enum2)

      General Form:

      (defdata-attach typename 
           [:enum/test enum-fn]
           [:equiv eq-rel]
           [:equiv-fixer eq-fix-fn]
           [:constraint ... ]
           [:sampling constant-list]
           [overridable metadata]
           )

      Defdata-attach can be used to attach custom test enumerators for certain types. This provides a method to customize Cgen's test data generation capability for certain scenarios.

      (Advanced) Type refinement : User can attach rules that specify (to Cgen) how to refine/expand a variable of this type when certain additional constraints match (or subterm-match). For those who are familar with dest-elim rules, the :rule field has a similar form. For example:

      (defdata-attach imemory
               :constraint (mget a x) ;x is the variable of this type
               :constraint-variable x
               :rule (implies (and (natp a) ;additional hyps
                                   (instp x.a)
                                   (imemoryp x1))
                              (equal x (mset a x.a x1))) ;refine/expand
               :meta-precondition (or (variablep a)
                                      (fquotep a))
               :match-type :subterm-match)

      Warning: Other optional keyword arguments are currently unsupported and the use of :override-ok can be unsound.