• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
        • Deftreeops
        • Defdefparse
        • Defgrammar
        • Tree-utilities
        • Notation
        • Grammar-parser
        • Meta-circular-validation
        • Parsing-primitives-defresult
        • Parsing-primitives-seq
        • Operations
          • In-terminal-set
          • Well-formedness
          • Closure
          • Plugging
            • Plug-rules
            • Remove-prose-rules
              • Rule-prosep
            • Ambiguity
            • Renaming
            • Numeric-range-retrieval
            • Rule-utilities
            • Removal
            • Character-value-retrieval
          • Examples
          • Differences-with-paper
          • Constructor-utilities
          • Grammar-printer
          • Parsing-tools
        • Vwsim
        • Isar
        • Wp-gen
        • Dimacs-reader
        • Pfcs
        • Legacy-defrstobj
        • Proof-checker-array
        • Soft
        • C
        • Farray
        • Rp-rewriter
        • Instant-runoff-voting
        • Imp-language
        • Sidekick
        • Leftist-trees
        • Java
        • Taspi
        • Bitcoin
        • Riscv
        • Des
        • Ethereum
        • X86isa
        • Sha-2
        • Yul
        • Zcash
        • Proof-checker-itp13
        • Regex
        • ACL2-programming-language
        • Json
        • Jfkr
        • Equational
        • Cryptography
        • Poseidon
        • Where-do-i-place-my-book
        • Axe
        • Bigmems
        • Builtins
        • Execloader
        • Aleo
        • Solidity
        • Paco
        • Concurrent-programs
        • Bls12-377-curves
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Plugging

    Remove-prose-rules

    Remove from a list of rules all the prose rules whose names have definitions in another list of rules.

    Signature
    (remove-prose-rules rules1 rules2) → rules
    Arguments
    rules1 — Guard (rulelistp rules1).
    rules2 — Guard (rulelistp rules2).
    Returns
    rules — Type (rulelistp rules).

    This is the first step of the plugging operation. This step removes from rules1 all the prose rules whose names have definitions in rules2.

    Definitions and Theorems

    Function: remove-prose-rules

    (defun remove-prose-rules (rules1 rules2)
      (declare (xargs :guard (and (rulelistp rules1)
                                  (rulelistp rules2))))
      (cond ((endp rules1) nil)
            (t (b* ((rule (car rules1)))
                 (and (mbt (rulep rule))
                      (if (and (rule-prosep rule)
                               (lookup-rulename (rule->name rule)
                                                rules2))
                          (remove-prose-rules (cdr rules1) rules2)
                        (cons rule
                              (remove-prose-rules (cdr rules1)
                                                  rules2))))))))

    Theorem: rulelistp-of-remove-prose-rules

    (defthm rulelistp-of-remove-prose-rules
      (b* ((rules (remove-prose-rules rules1 rules2)))
        (rulelistp rules))
      :rule-classes :rewrite)