Tuesday 21 November 2017

Boolector Opções Binárias


Boolector Python API documentation Você pode configurar esta instância via Setopt (). Por exemplo. Se você quiser habilitar a geração do modelo: Para obter uma descrição detalhada de todas as opções configuráveis, consulte Setopt (). Em seguida, você pode analisar um arquivo de entrada, e / ou gerar expressões para ser afirmado via Aassert (). Ou, se o uso incremental estiver ativado, assumido via Assume () (analogamente ao MiniSAT). Observe que o design interno do Boolector8217s é motivado pelo design de hardware, portanto, não distinguimos entre o tipo 8216Boolean8217 eo vetor tipo 8216bit de comprimento 18217. Por exemplo, Se você quiser analisar um arquivo de entrada 8220example. btor8221, use Parse (): O uso incremental não está habilitado, portanto, se o analisador não encontrar um erro, ele retorna UNKNOWN (para uma descrição mais detalhada dos parsers retornam valores, veja Analisar ()). No entanto, se o analisador encontrar um erro, ele retorna PARSEERROR. E uma explicação desse erro é armazenada em errormsg. Se o arquivo de entrada especifica um status (conhecido) da fórmula de entrada (satisfatório ou insatisfatório), esse status é armazenado no status. Como um exemplo para gerar e afirmar expressões via Assert (). Considere o exemplo a seguir: Dada a instância Boolector criada acima, geramos e afirmamos as seguintes expressões: Depois de analisar um arquivo de entrada e / ou asserting / assumindo expressões, a satisfiability da fórmula resultante pode ser determinada via Sat (). Se a fórmula resultante é satisfazível ea geração do modelo foi ativada via Setopt (). Você pode imprimir o modelo resultante via Printmodel (). Ou atribuições de consulta de vetor de bits e variáveis ​​de matriz ou funções não interpretadas por meio de atribuição. Observe que a consulta de atribuições não está limitada a variables8212, você pode consultar a atribuição de qualquer expressão arbitrária. Por exemplo. Dado o exemplo acima, primeiro determinamos se a fórmula é satisfazível via Sat () (o que é): Agora você pode consultar as atribuições das variáveis ​​xey, ou imprimir o modelo resultante através de Printmodel (). O Boolector suporta modelos de impressão em seu próprio formato (8220btor8221, o padrão) ou no formato SMT-LIB v2 (8220smt28221): Um modelo possível seria: que neste caso indica as atribuições das variáveis ​​de vetor de bits xey. Observe que a primeira coluna indica o id de uma entrada, a segunda coluna sua atribuição ea terceira coluna seu nome (ou símbolo) se houver. No caso em que a fórmula inclui arrays como entrada, seus valores em um determinado índice são indicados da seguinte forma: onde A tem id 4 e é uma matriz com índice e largura de bit de elemento de 2 e seu valor no índice 0 é 1. Impressão O modelo acima no formato SMT-LIB v2: Automatic Constant Conversion Para quase todos os métodos do Boolector que cria nós, em vez de passar argumentos do tipo BoolectorNode. A API do Python permite passar constantes como argumentos. O único requisito é que deve ser possível derivar a largura de bit dos operandos constantes dos operandos restantes. Por exemplo, operadores binários como operandos Add () podem ser uma constante e sua largura de bit será derivada do outro operando não-constante, eg: Para todas as operações de deslocamento é possível definir a largura de deslocamento como constante, por exemplo: For Operações em arrays todos os argumentos podem ser constantes (exceto a própria matriz), pois a largura de bit dos operandos pode ser derivada da matriz, por exemplo: Isso também se aplica aos argumentos de aplicações de função, que podem ser derivados da assinatura de função :

No comments:

Post a Comment