def __init__(self):
super().__init__()<EOL>self._proc: Popen = None<EOL>self._command = f'<STR_LIT>'<EOL>self._init = [<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>]<EOL>self._get_value_fmt = (RE_GET_EXPR_VALUE_FMT, <NUM_LIT:16>)<EOL>self.debug = False<EOL>self._received_version = None<EOL>self.version = self._solver_version()<EOL>self.support_maximize = False<EOL>self.support_minimize = False<EOL>self.support_reset = True<EOL>logger.debug('<STR_LIT>', self.version)<EOL>if self.version >= Version(<NUM_LIT:4>, <NUM_LIT:5>, <NUM_LIT:0>):<EOL><INDENT>self.support_maximize = False<EOL>self.support_minimize = False<EOL>self.support_reset = False<EOL><DEDENT>elif self.version >= Version(<NUM_LIT:4>, <NUM_LIT:4>, <NUM_LIT:1>):<EOL><INDENT>self.support_maximize = True<EOL>self.support_minimize = True<EOL>self.support_reset = False<EOL><DEDENT>else:<EOL><INDENT>logger.debug('<STR_LIT>')<EOL><DEDENT>
Build a Z3 solver instance.
This is implemented using an external z3 solver (via a subprocess).
See https://github.com/Z3Prover/z3