UPI Basics
Solver input and output
Solver is a program that communicates via standard I/O.
Commands
Solver responds to commands from viewer.
- Command from viewer is a single line sent to solver's
Standard Input
but empty lines and lines starting with hash character (#
) are ignored. - Each command from solver gets a response from a solver.
- The client can send many commands without waiting for a reply from solver
- The solver will answer all commands in the same order in which they are sent to the solver.
- Solver's reponse can be one or more lines or an error.
- When running solver from another program it's recommended to call
set_end_string END
command at the start. The solver will print theEND
string after each response.
If the given command doesn't request data of any kind solver will respond with <command> ok!
.
Other communication
Solver sometimes can print to stdout lines which are not command responses. Notably they are:
- Lines sent by solver at the startup.
PioSOLVER-edge 2.0 (Jan 01 2021, 00:00:01)
(c) Piotr Lopusiewicz
registered to [email protected]
it's recommended to send some command to a solver (e.g. set_end_string END
or is_ready
) and start parsing communication after receiving expected response (e.g. is_ready ok!
)
- Solver Updates
Solver calculation is run in the background and it prints solving updates every now and then. It can be either single line of a from:
SOLVER: stopped (requested)
or a multiline message starting with a line SOLVER:
and ending with END string.
It's guaranteed that it will not overlap with command responses.
SOLVER:
running time: 52.977
EV OOP: 181.767
EV IP: 293.233
OOP's MES: 242.008
IP's MES: 343.408
Exploitable for: 55.209
END