• 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
            • Leaves-in-termset-when-match-alt/conc/rep/elem-in-termset
            • Symbol-in-termset-p
              • Rulelist-in-termset-p
              • String-in-termset-p
              • Char-insensitive-in-termset-p
              • Chars-sensitive-in-termset-p
              • Chars-insensitive-in-termset-p
              • Concatenation-in-termset-p
              • Char-val-in-termset-p
              • Alternation-in-termset-p
              • Prose-val-in-termset-p
              • Num-val-in-termset-p
              • Char-sensitive-in-termset-p
              • Rule-in-termset-p
              • Repetition-in-termset-p
              • Terminal-strings-in-termset-when-rules-in-termset
              • Element-in-termset-p
              • Nats-in-termset-when-match-sensitive-chars-in-termset
              • Nats-in-termset-when-match-insensitive-chars-in-termset
              • Leaves-in-termset-when-match-char-val-in-termset
              • Nat-in-termset-when-match-sensitive-char-in-termset
              • Nat-in-termset-when-match-insensitive-char-in-termset
              • Leaves-in-termset-when-match-num-val-in-termset
            • Closure
            • Well-formedness
            • Plugging
            • 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
        • C
        • Proof-checker-array
        • Soft
        • Farray
        • Rp-rewriter
        • Instant-runoff-voting
        • Imp-language
        • Sidekick
        • Ethereum
        • Leftist-trees
        • Java
        • Riscv
        • Taspi
        • Bitcoin
        • Zcash
        • Des
        • X86isa
        • Sha-2
        • Yul
        • Proof-checker-itp13
        • Regex
        • ACL2-programming-language
        • Json
        • Jfkr
        • Equational
        • Cryptography
        • Axe
        • Poseidon
        • Where-do-i-place-my-book
        • Aleo
        • Bigmems
        • Builtins
        • Execloader
        • Solidity
        • Paco
        • Concurrent-programs
        • Bls12-377-curves
      • Debugging
      • Community
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • In-terminal-set

    Symbol-in-termset-p

    Check if a symbol is either a rule name or a natural number in a set.

    Signature
    (symbol-in-termset-p symbol termset) → yes/no
    Arguments
    symbol — Guard (symbolp symbol).
    termset — Guard (nat-setp termset).
    Returns
    yes/no — Type (booleanp yes/no).

    To prove that the terminal strings generated by a rule list consist of only terminals in a set, it is convenient to work with trees whose rule names may not all be expanded, to avoid dealing with this additional constraint. For these trees, we need to weaken the notion that tree->string only consists of terminals in the set, by allowing non-terminal symbols as well.

    Definitions and Theorems

    Function: symbol-in-termset-p

    (defun symbol-in-termset-p (symbol termset)
      (declare (xargs :guard (and (symbolp symbol)
                                  (nat-setp termset))))
      (symbol-case symbol
                   :terminal (in symbol.get termset)
                   :nonterminal t))

    Theorem: booleanp-of-symbol-in-termset-p

    (defthm booleanp-of-symbol-in-termset-p
      (b* ((yes/no (symbol-in-termset-p symbol termset)))
        (booleanp yes/no))
      :rule-classes :rewrite)

    Theorem: symbol-in-termset-p-when-natp

    (defthm symbol-in-termset-p-when-natp
      (implies (natp nat)
               (equal (symbol-in-termset-p nat termset)
                      (in nat termset))))

    Theorem: symbol-in-termset-p-when-rulenamep

    (defthm symbol-in-termset-p-when-rulenamep
      (implies (rulenamep rulename)
               (symbol-in-termset-p rulename termset)))