Documentation
Comprehensive guide to using Marina SAT Solver and understanding its algorithms.
Getting Started
Learn how to use the Marina SAT Solver interface
API Reference
Complete REST API documentation
Algorithm Details
Technical details about IF-expression normalization
Examples
Comprehensive examples and use cases
Getting Started
Using the Solver
- Enter your boolean formula in the input field
- Use the buttons or type operators directly
- Click "Solve SAT" to get the result
- View the assignment or error message
Syntax Rules
- Variables: lowercase letters, underscores, and numbers (e.g.,
a1,var_2) - Operators:
&(AND),|(OR),~(NOT),->(IMPLY),<->(EQUIV) - Constants:
T(True),F(False) - Parentheses for grouping expressions
API Reference
REST API Endpoint
POST /marina
Content-Type: application/json
{
"prop": "(a & b) -> c"
}
Response:
{
"assignment": "(a,true) (b,true) (c,true)",
"error": null
}Error Responses
400: Bad request (missing formula)500: Internal server error200with error field: Parsing error
Algorithm Details
IF-expression Normalization
Marina uses the IF-expression normalization technique for SAT solving. This approach:
- Converts boolean formulas to IF-expressions
- Normalizes expressions to reduce complexity
- Performs efficient satisfiability checking
- Returns partial assignments when possible
Performance Characteristics
- Worst-case exponential time complexity (like all SAT solvers)
- Optimized for typical boolean formulas
- Efficient memory usage
- Supports formulas with hundreds of variables
Examples
Basic Examples
Simple AND
a & bBoth variables must be true
Implication Chain
(a & b) -> (c | d)If a and b are true, then c or d must be true
Contradiction
a & ~aAlways unsatisfiable (UNSAT)