• Top
    • Documentation
    • Books
    • Boolean-reasoning
      • Ipasir
      • Aignet
      • Aig
      • Satlink
        • Sat-solver-options
          • Unsat-checking
          • Check-config
            • Pigeon-hole
              • No-two-in-hole-aux
              • No-others-in-hole
              • Not-both-in-hole
              • No-two-in-any-hole
              • Every-bird-in-hole
              • No-two-in-hole
              • Bird-in-some-hole
              • Bird-in-hole
            • Simple-sat
            • Assert-unsat
            • Assert-sat
        • Config-p
        • Logical-story
        • Dimacs
        • Gather-benchmarks
        • Cnf
        • Satlink-extra-hook
        • Sat
      • Truth
      • Ubdds
      • Bdd
      • Faig
      • Bed
      • 4v
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Check-config

Pigeon-hole

Signature
(pigeon-hole num-birds num-holes) → clauses
Arguments
num-birds — Guard (natp num-birds).
num-holes — Guard (natp num-holes).
Returns
clauses — Type (lit-list-listp clauses).

Definitions and Theorems

Function: pigeon-hole

(defun pigeon-hole (num-birds num-holes)
  (declare (xargs :guard (and (natp num-birds)
                              (natp num-holes))))
  (let ((__function__ 'pigeon-hole))
    (declare (ignorable __function__))
    (append (every-bird-in-hole num-birds num-holes)
            (no-two-in-any-hole num-birds num-holes))))

Theorem: lit-list-listp-of-pigeon-hole

(defthm lit-list-listp-of-pigeon-hole
  (b* ((clauses (pigeon-hole num-birds num-holes)))
    (lit-list-listp clauses))
  :rule-classes :rewrite)

Subtopics

No-two-in-hole-aux
No-others-in-hole
Not-both-in-hole
No-two-in-any-hole
Every-bird-in-hole
No-two-in-hole
Bird-in-some-hole
Bird-in-hole