Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

PiMachine

Guides

  • Evaluation
  • Terms
  • Types

Tech Notes

  • Diagrams
  • SAT

Symbols

  • PiChoice
  • PiCombinator
  • PiContinuation
  • PiEval
  • PiEvalTrace
  • PiFunction
  • PiHole
  • PiInverse
  • PiMachineDiagram
  • PiMachinePort
  • PiMinus
  • PiOne
  • PiPlus
  • PiReduce
  • PiState
  • PiStateQ
  • PiTerm
  • PiTermQ
  • PiTimes
  • PiTypeQ
  • PiUnit
  • PiZero
SAT
Definition of a SAT solver implemented in Pi-machine.
PiSAT
[formula]
make a term that checks satisfiability of a given reversible boolean combinator
XXXX.
Import paclet context and predefined SAT program with examples:
In[29]:=
Needs["WolframInstitute`PiMachine`"]
In[28]:=
Needs["WolframInstitute`PiMachine`SAT`"]
Verify that formula
a∧b⊻a∧b
is not satisfiable:
In[15]:=
SatisfiableQ[a∧b⊻a∧b]
Out[15]=
False
Check that
Ex1
is computes
{,a,b}{a∧b⊻a∧b,a,b}
:
In[21]:=
AssociationMap[Ex1,Drop[PiBoolTerms[3],4]]
Out[21]=


⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗


The type of SAT solver program is

:
In[31]:=
PiSAT[Ex1]["Type"]
Out[31]=

Evaluating non-satisfiable example results in exception:
In[11]:=
PiEval
PiSAT[Ex1],
PiTerm

PiOne

Out[11]=
error
The
a∧b⊻a∨b
is satisfiable:
In[16]:=
SatisfiableQ[a∧b⊻a∨b]
Out[16]=
True
In[22]:=
AssociationMap[Ex2,Drop[PiBoolTerms[3],4]]
Out[22]=


⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗


The result is evaluating satisfiable combinators result in value of the
PiUnit
type:
In[12]:=
PiEval
PiSAT[Ex2],
PiTerm

PiOne

Out[12]=
1
⊳
Two more examples:
In[18]:=
SatisfiableQ[(a∧b)∧(a⊻b)]
Out[18]=
False
In[23]:=
AssociationMap[Ex3,Drop[PiBoolTerms[3],4]]
Out[23]=


⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗


In[14]:=
PiEval
PiSAT[Ex3],
PiTerm

PiOne

Out[14]=
error
In[19]:=
SatisfiableQ[(a∨b)∧(a⊻b)]
Out[19]=
True
In[24]:=
AssociationMap[Ex4,Drop[PiBoolTerms[3],4]]
Out[24]=


⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗

,

⊗

⊗



⊗

⊗


In[10]:=
PiEval
PiSAT[Ex4],
PiTerm

PiOne

Out[10]=
1
⊳
""

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com