Monday, 3 July 2017

Boolector binary options


Boolector As versões mais recentes, a partir da versão 1.6.0, usam uma licença restrita para uso não comercial. Por padrão, também é proibido usar essas versões do Boolector como parte de uma competição sem permissão explícita por escrito. Todas as versões de código-fonte anteriores à versão 1.6.0 ainda estão disponíveis sob a GNU General Public License Versão 3. Todos os lançamentos binários (incluindo o Boolector 1.2) estão disponíveis para fins de pesquisa e avaliação apenas em um ambiente acadêmico. Eles não podem ser usados ​​em um ambiente comercial, particularmente como parte de um produto comercial, sem permissão por escrito. Em geral, Boolector é fornecido como está, sem qualquer garantia. Entre em contato com Armin Biere para perguntas adicionais sobre licenciamento Boolector sob uma licença diferente ou para obter versões mais atualizadas. As seguintes versões estão disponíveis sob uma licença restrita para uso não comercial. Observe que, por padrão, também é proibido usar versões do Boolector sob esta licença como parte de uma competição sem permissão explícita por escrito. As versões a seguir estão (ainda) disponíveis na GNU General Public License Versão 3: Release 1.5.118 usa o recurso simpdelay do Lingeling para resolução mais rápida de instâncias simples. Além disso, a biblioteca agora suporta a escolha do solucionador SAT via API. Esta versão só funciona com um Lingeling mais recente da versão ala e acima. A versão 1.5.116 corrige uma afirmação incorreta e os exemplos fornecidos (que foram quebrados anteriormente) compilar novamente. Esta versão usa a versão reentrante mais recente 953 do PicoSAT, portanto, não funciona com versões anteriores do PicoSAT. A versão 1.5.115 do Boolector está próxima da versão utilizada na Competição SMT 2012. É melhor usar em combinação com a versão al6 do Lingeling. Mas também funciona com PicoSAT e MiniSAT. O código-fonte desses resolvedores SAT precisa ser obtido separadamente com os arquivos listados acima. A terceira versão do código fonte do Boolector 1.4.1 corrige um bug raro no simplificador removendo a otimização de expressão não restringida. Os seguintes arquivos contêm versões mais fáceis de compilar do Boolector 1.5.115 embalado com Lingeling al6 e Boolector 1.5.116 e 1.5.118 embalados com Lingeling al6, PicoSAT 953 e MiniSAT 2.2.0. Essas versões com versão Lingeling al6 como back-end devem ser ligeiramente mais rápidas do que a versão de competição 1.5.110-agm nos vetores de bits simples sem benchmarks de arrays da SMT Competition 2012. e ligeiramente mais lentas com aqueles com arrays. Isto é principalmente devido a Lingeling. A versão de competição de Lingeling não está disponível publicamente. As versões a seguir são binários de 32 bits estaticamente vinculados ao Linux-x86. Para essas versões, não apoiamos outras plataformas nem planejamos uma versão de origem. Finalmente, as restrições da seção de licença se aplicam. As seguintes fontes representam a implementação do protótipo pBoolector, uma implementação paralela do Boolector baseada no bit-blasting e look-ahead para o QFBV. Esta versão foi desenvolvida por Christian Reisenberger para sua tese de mestrado e não será mantida no futuro. Está disponível sob uma licença restrita para uso não comercial. Consulte os arquivos README e COPYING fornecidos com as fontes para obter informações mais detalhadas sobre o pBoolector e sua licença. Observe que as fontes pBoolector fornecidas são uma extensão para o solucionador SMT Boolector versão 2.0.1. Broker de Opções Binárias Embora as opções binárias sejam uma maneira relativamente nova de negociar no mercado de ações e outros mercados financeiros, é uma área em rápido crescimento da Mercados de investimento. Os comerciantes experientes são dabbling com esta técnica e abriu a porta para que muitos comerciantes do principiante investem nos mercados. No entanto, é essencial compreender os processos e riscos associados a este tipo de negociação. As opções binárias transformaram-se um navio negociando legal em 2008 em que os Estados Unidos o reconheceram como uma maneira válida, embora diferente de negociar na troca conservada em estoque. É reconhecido como uma das maneiras mais fáceis para qualquer um começar a negociar especialmente aqueles sem experiência. Quando você troca em opções binárias você nunca possui uma mercadoria ou ativo. Em vez disso, você está especulando sobre se o preço de um ativo específico geralmente definido pelo preço da ação, vai para cima ou para baixo dentro de um período de tempo definido. Na verdade, você está apostando ou fazendo uma previsão sobre o movimento do preço de um determinado ativo de você obtê-lo direito você ganhar dinheiro, se não, você perde dinheiro. Cada especulação é geralmente muito curto prazo. Há uma boa quantidade de informações fornecidas a você antes do comércio, se você usar o software online ou um corretor de opções binário aprovado. Em essência, você escolhe um ativo e decidir se o preço vai para cima ou para baixo você não pode hedge suas apostas e espero que ele vai ficar o mesmo Isso torna o conceito de seu investimento muito simples ou o preço se move na direção que você diz que você vai Obter um retorno sobre o seu investimento, ou, ele se move o caminho oposto e você não recebe nada. Depois de ter escolhido o seu activo, em seguida, o seu corretor de opções binárias irá dizer-lhe a percentagem de retorno que você receberá se você estiver correto. Em seguida, você precisa escolher o prazo para sua especulação e quanto dinheiro você está disposto a cometer. Depois de ter decidido todos esses fatores e você está feliz com a sua decisão, iniciar o comércio, selecionando executar em sua tela. A negociação de opção binária de espera e espera é uma das poucas áreas de investimento onde você vai saber exatamente o que seu retorno será fornecer o preço das ações se move na direção certa. Você também está aberto para negociação em uma enorme variedade de mercados se moeda, ações ou commodities o princípio é o mesmo em todos os mercados. De fato, as opções binárias são uma das maneiras mais fáceis de negociar nos mercados internacionais sem precisar de várias contas de corretagem e complicar seus investimentos. Apenas 3 etapas simples a seu sucesso Registre-se e obtenha um presente Fund sua conta de troca e obtenha um sentido do mercado do bônus Predict e ganhe o PASSO 1 - Registre-se e obtenha um Registo do presente tomará menos de um minuto. Você receberá imediatamente sua conta de negociação e todas as ferramentas necessárias para uma negociação bem-sucedida. Nós avaliamos altamente sua escolha. É por isso que preparamos os presentes para você: aulas de vídeo de opções binárias. PASSO 2 - Financiar sua Conta de Negociação e obter um Bônus Você pode financiar uma conta logo após o registro. Estes são os serviços de financiamento mais populares, que lidam conosco: Ao financiar uma conta de negociação, você pode obter os fundos adicionais como um bônus. Ao investir mais, o seu bônus pode ser mesmo dobrado Mac, PC, tablet ou qualquer smartphone mais de 100 ativos disponíveis para negociação. De qualquer dispositivo, a qualquer momento e com um alto nível de segurança. Criando estas plataformas de negociação, nós trabalhamos cada detalhe, a fim de lhe fornecer as condições confortáveis ​​para multiplicar o seu sucesso Garantias retiradas processamento dentro de 1 hora Possibilidade de comércio durante fins de semana Ampla gama de métodos de financiamento e retiradas 100 garantidos de negociação com os dados Finpari 2016. Finpari Todos os direitos reservados Ao negociar opções binárias como com quaisquer ativos financeiros, há uma possibilidade que você pode sustentar um Perda parcial ou total de seus fundos de investimento na negociação. Como resultado, é expressamente aconselhado que você nunca deve investir com, ou negociar sobre, o dinheiro que você não pode dar ao luxo de perder através desta forma de negociação. A Finpari não oferece garantias de lucro nem evita perdas na negociação. O Website eo Conteúdo podem estar disponíveis em vários idiomas. A versão em inglês é a versão original e a única que vincula a Finpari prevalecerá sobre qualquer outra versão em caso de discrepância. A Finpari não será responsável por quaisquer traduções errôneas, inadequadas ou enganosas da versão original para outras línguas. A Finpari, nem os seus agentes ou parceiros não estão registados e não prestam quaisquer serviços no território dos EUA. Sobre a nossa empresaMarket oportunidades Indices Index opções binárias são um up-and-coming favorito entre os comerciantes em todo o mundo. Nasdaq, SampP500, Dow Jones e FTSE100 são bons exemplos de índices que refletem o poder econômico de sua respectiva economia em que os investidores podem investir. Um índice compreende basicamente de .. Ações Stock trading de opções de ações é essencialmente especular sobre um aumento ou queda nas empresas Ações em um período predefinido. BinaryBook oferece uma ampla gama de ações, como Barclays, Volkswagen, BMW, Allianz SE, Microsoft e muito mais. Stock negociação geralmente dá .. Commodities Commodities comércio compreendem transações em matérias-primas ou primários. O mercado de commodities pode colher alto retorno sobre os investimentos e flutuações do mercado são mais do que rentável para os comerciantes. Trading commodities com BinaryBook é fácil e simples. Qualquer comerciante, de qualquer .. Moedas Moeda negociação é um método de transação na indústria de opções binárias, que pode gerar lucros high-end para profissionais e comerciantes novatos. Negociar moedas dentro do limite de opções binárias é hoje um luxo acessível para comerciantes em todo o mundo. Moeda .. Negociação móvel Necessidade de ajuda Black White Trading Opções binárias negociação com GOptions é uma experiência que não pode ser comparado com outros corretores. Temos uma oferta incomparável para os comerciantes de todos os tipos, com uma ampla gama de activos comerciais disponíveis 24 horas por dia de domingo a sexta-feira e até mesmo opções disponíveis nos fins de semana. Comece a negociar com a plataforma móvel a mais profissional, sempre no GO Loja da loja do jogo Loja GOPTIONS: UM ESTADO DA MISSÃO As opções binárias que negociam com GOptions são uma experiência que não podem ser comparadas com outras corretoras. Temos uma oferta incomparável para os comerciantes de todos os tipos, com uma ampla gama de activos comerciais disponíveis 24 horas por dia de domingo a sexta-feira e até mesmo opções disponíveis nos fins de semana. Como um grupo tricotado muito apertado de traders profissionais de Forex e binários profissionais, a empresa tem um grande senso de que os clientes encontram qualidade importante. Hoje não basta ter a melhor plataforma ou as retiradas mais rápidas. Os clientes gostam de si mesmos buscam mais da corretora do que o lado técnico das coisas. Isso é onde GOptions verdadeiramente brilha como somos todos os comerciantes e, como tal, qualquer questão que você nunca pode ter, você sempre será fornecido respostas de um comerciante. Assim GOptions, em muitos aspectos é uma plataforma de negociação por comerciantes para os comerciantes. Tudo weve feito tem sido com o comerciante em mente. Então, quando você revisar o que temos disponíveis, você verá um enorme 150 ativos disponíveis para o comércio de várias maneiras. Você pode negociar uma escala larga das expiras que variam de 30 segundos a 300 segundos em nossa plataforma das opções de TURBO. Isso permite que as necessidades de negociação de ritmo rápido sejam realizadas com a execução rápida de relâmpagos. Os comerciantes também são capazes de negociar o tradicional High / Low ou Call / Put opções com expiries variando de 10, 20, 30, 60 minutos para opções de fim de dia. Pares de negociação e opções de longo prazo estão disponíveis 24 horas por dia também. Opções de Escada: Opções Binárias com Transparência, somente no GOptions Mas a maioria dos operadores de opções binárias certamente se apaixonarão por nossas Opções de Escada. O que opções de escada fornecem é um meio de transparência de outra forma oculto pela neblina de preços. O que queremos dizer é a revisão de opções binárias de preços em GOptions em opções tradicionais de alta / baixa, é quase impossível avaliar o viés direcional real dos mercados apenas com base no preço. Bem, isso só é verdade se você passar sobre o uso incrível de opções de escada. Você vê, opções de escada fornecem preços em, abaixo e acima do preço de mercado. Então o que você pode ver é que GOptions oferece traders de opções binárias um meio de medir a propensão verdadeira do mercado a qualquer momento. À medida que o percentual de pagamento é maior para um dos extremos na escada, você pode ter certeza de que as flutuações de preços são, portanto, menos propensos a cabeça nessa direção. Em outras palavras, estamos literalmente dizendo o que fazer a seguir. Ao compreender melhor o comportamento do mercado com métricas reais e ferramentas, esperamos criar uma melhor raça de comerciante. Para aqueles que não estão familiarizados com algumas das ofertas do GOptions, lembre-se das seguintes opções de opções binárias exclusivas: opções binárias de 30 segundos, opções binárias de 60 segundos, opções de escada e negociação de Forex. Estes são exclusivamente disponíveis na plataforma de negociação GOptions opções binárias e para os comerciantes, isso deve ser simplesmente uma benção. As opções binárias de 30 segundos, assim como as restantes opções Turbo, são simplesmente o meio mais rápido e impressionante de negociar opções binárias hoje no mundo. Ao olhar para os locais de negociação de opções binárias disponíveis, é fácil ver por que GOptions é um favorito em cada categoria como uma corretora e isso em toda a linha. GOptions: O gateway para o lucro: 30 Segundo opções, quando usado com estratégias adequadas são o caminho mais rápido para rentabilidade atualmente realizável. Para aqueles que procuram outros meios de criar comércios rentáveis ​​sem o ritmo furioso de opções de 30 segundo, 300 segundo ou cinco opções de minuto pode ser uma escolha melhor. Novamente, o único alvo da Goptions é expandir sua oferta para além da borda sangrenta do mundo comercial sem comprometer os princípios sagrados que tornam a negociação verdadeiramente lucrativa. Antes de explicar qual é a nossa verdadeira missão, GOptions como equipe e equipe também desejam dedicar algum tempo para explicar a vantagem técnica que temos como corretora de opções binárias. GOptions é a única corretora a oferecer negociações de opções binárias totalmente automatizadas ao mais alto nível usando o software de terceiros integrado. Com essas conexões incríveis, GOptions é capaz de fornecer uma gama ainda maior e mais atraente de serviços que podem ajudar a criar ainda mais lucros e oportunidades de negociação para os comerciantes em uma base diária. Auto negociação com GOptions é simplesmente a maneira mais suave e mais robusto para transformar sua negociação na máquina que precisa ser. Demorar algum tempo e ler o que GOptions missão é a sua clientela e para você. GOptions apresenta suas opções binárias Missão Nossa missão é baseada em fornecer o mais alto nível de serviço a um comerciante muito exigente. Como explicado, somos comerciantes nós mesmos e como tal, nosso objetivo principal é fornecer o nível de serviço, tanto em um nível técnico e pessoal, que é o que gostaríamos de nós mesmos. Esta missão presta-se em cada aspecto do negócio que nós funcionamos no nome de GOptions. Seja em relação à ampla gama de ativos, as expiações que fornecemos acesso, um espectro incrível de métodos de negociação, e todo o caminho para o serviço que prestamos. Quando se trata de serviço, o seu realmente chave que o pessoal aqui tem experiência real e válida ao lidar com as questões do dia. Ninguém pode ser 100 o tempo todo. As coisas podem e vão dar errado. A plataforma de negociação pode ter um problema ou talvez uma chamada importante com um dos nossos representantes foi de repente caiu. É o papel da corretora com um alto nível de serviço e um compromisso com a excelência para resolver o problema. Só podemos ser tão bons quanto a nossa última solução. Então, quando você tem um problema de negociação relacionados, quem iria, você prefere lidar com ele É claro que você quer experimentado e testado opções binárias especialistas e nós somos os únicos capazes de fornecer isso no mais alto nível. Disputas comerciais ocorrerão. A plataforma falhará. A execução será lenta. A questão é whos lá para você quando as coisas quebram A resposta: Nós somos. Essa é a missão que nós escolhemos para realizar e para conseguir isso, fizemos uma difícil escolha de contratar apenas comerciantes para a empresa. Isso significa que até mesmo o secretário tem experiência de negociação e isso significa que toda a ajuda que você recebe de nós será do mais alto nível de corretores experientes e representantes de serviço 24 horas por dia. Temos investido em todos os aspectos desta corretora e só pode esperar que você venha para encontrar o serviço que oferecemos da mais alta ordem e ajuste às suas necessidades. Como parte da missão para fornecer este nível de serviço contínuo, weve empreendido para fornecer os operadores binários da opção com a abilidade de ser fornecidos os payouts os mais do competidor disponíveis no mercado. No entanto, weve tomou ainda mais com as nossas opções binárias conta VIP. Com ele, os comerciantes binários obter acesso ao seguro de negociação que redes do cliente 10 de qualquer mês perdedor em dinheiro de volta. Fazemos isso como parte de um desconto baseado em volume, mas isso não é tudo. Os comerciantes de opções binárias com status VIP também terão acesso a um pagamento maior em qualquer ativo de sua escolha. Junte esta oferta com tudo o mais em oferta e você vem perceber que é aqui que a negociação vive: GOptions, bem-vindo à máquina média Veja nossa demo videoVersion 5.12, 2016-06-06 Corrigir problemas de compliação GHC8.0 e limpeza de aviso . Graças a Adam Foltzer para a maior parte do trabalho e Tom Sydney Kerckhove para o patch inicial de compatibilidade 8.0. Correção menor para modelos de impressão com flutuadores quando a base é 2/16, certificando-se de que o alinhamento é feito adequadamente acomodando para a saída crackNum. Aguarde que o processo externo morra em exceção, para evitar zumbis desovando. Graças a Daniel Wagner pelo patch. Fix hash-consed arrays: Anteriormente, estávamos colocando em cache com base apenas em elementos, o que não é suficiente, pois você pode ter conflitos que diferem apenas no tipo de endereço, mas o mesmo conteúdo. Obrigado a Brian Huffman por relatar e pelo patch correspondente. Versão 5.11, 2016-01-15 Corrigir o problema da documentação sem alterações funcionais Versão 5.10, 2016-01-14 Documentação: Corrigir um monte de links http mortos. Obrigado a Andres Sicard-Ramirez por relatar. Adições à API Dinâmica: svSetBit. Definir um determinado bit svBlastLE, svBlastBE. Bit-explosão para grande / pequeno endian svWordFromLE, svWordFromBE: Unblast de big / little endian svAddConstant. Adicione uma constante a um SVal svIncrement, svDecrement. Adicionar / subtrair 1 de um SVal Versão 5.9, 2016-01-05 Definição padrão para symbolicMerge, que permite que os tipos que são instâncias do Generic tenham uma instância de mesclagem automaticamente derivável (isto é, ite). Graças a Christian Conkle pelo patch. Adicione suporte para quotnon-model-vars, onde podemos agora dizer SBV para não levar em conta certas variáveis ​​de uma perspectiva de construção de modelo. Isso vem a calhar em fazer um allSat chamadas onde pode haver variáveis ​​de testemunho que não nos importa a singularidade para. Veja quotData / SBV / Examples / Misc / Auxiliary. hsquot para um exemplo, ea discussão em github / LeventErkok / sbv / issues / 208 para motivação. Yices interface: Se Reals são usados, em seguida, escolha a lógica QF UFLRA, em vez de QF AUFLIA. Infelizmente, a seleção de lógica permanece complicada desde que a história de SMTLib para a seleção de lógica é bastante confusa. Outros solucionadores não são afetados por essa alteração. Versão 5.8, 2016-01-01 Corrigir alguns erros de digitação Adicione svEnumFromThenTo à interface dinâmica, permitindo a construção dinâmica de x, y. Z e x. Y quando os valores envolvidos são concretos. Adicione svExp à interface dinâmica, implementando a expotação Versão 5.7, 2015-12-21 Exportar HasKind (..) a partir da interface dinâmica. Graças a Adam Foltzer para o patch. Tratamento mais cuidadoso dos nomes reservados do SMT-Lib. Atualize a versão testada do MathSAT para 5.3.9 Generalize sShiftLeft / sShiftRight / sRotateLeft / sRotateRight para trabalhar com valores de turno / rotação assinados, onde os valores negativos revertem a direção. Similar generalizações também são feitas para as variantes dinâmicas. Versão 5.6, 2015-12-06 Alterações secundárias à forma como imprimimos modelos: Alinhar pelo tipo Imprimir sempre o tipo (anteriormente estávamos saltando para Bool) Rework como as propriedades SBV são verificadas rapidamente muito mais utilizável e robusto Fornecer uma função sbvQuickCheck, Que é essencialmente o mesmo que quickCheck, exceto que também retorna um booleano. Útil para a API programável. (A versão dinâmica é chamada svQuickCheck) Várias mudanças / adições em apoio do desenvolvimento sbvPlugin: Data. SBV. Dynamic: Define / export svFloat / svDouble / sReal / sNumerator / sDenominator Data. SBV. Internals: Construtores de exportação de resultado, SMTModel, E a função showModel Simplifique como os tipos não-interpretados são representados internamente. Versão 5.5, 2015-11-10 Esta é essencialmente a mesma versão que 5.4 abaixo, exceto para permitir que a compilação SBV com GHC 7.8 série. Graças a Adam Foltzer para o patch. Versão 5.4, 2015-11-09 Adicionar sAssert, que permite aos usuários pimenta seu código com condições booleanas, bem como as chamadas ASSERT habituais. Observe que a semântica de um sAssert é que ele é um NOOP, ou seja, ele simplesmente retorna seu argumento final. Use em coordenação com segurança e segurança. Veja abaixo. Implementar seguro e seguro, que statically determinar todas as chamadas para sAssert sendo seguro para executar. Qualquer vilação será marcada. SBV-gtC: Traduzir chamadas sAssert para verificações dinâmicas no código C gerado. Se isso não for desejado, use a função cgIgnoreSAssert para desativá-la. Adicionar isSafe: Qual converte um SafeResult para um Bool, quando estamos apenas interessados ​​em um resultado booleano. Adicionar dados / SBV / Examples / Misc / NoDiv0 para demonstrar o uso da função segura. Versão 5.3, 2015-10-20 Ponto principal desta versão para tornar SBV compilar com GHC 7.8 novamente, para acomodar principalmente para Cryptol. Como Cryptol move para GHC gt 7.10, pretendemos remover as quotcompatibilityquot alterações novamente. Graças a Adam Foltzer para o patch. Minor mods para como bitvector igualdade / desigualdade são traduzidos para SMTLib. Nenhum impacto visível do usuário. Versão 5.2, 2015-10-12 Regressão em 5.1: Corrigir um erro menor na impressão de base 2/16 onde as constantes não interpretadas não foram tratadas corretamente. Versão 5.1, 2015-10-10 fpMin, fpMax: Se essas funções recebem 0 / -0 como seus dois argumentos, isto é, ambos os zeros, mas sinais alternados em qualquer ordem, então SMTLib requer que a saída seja escolhida de forma não determinística. Anteriormente, nós fixamos esse resultado como 0 seguindo a interpretação em Z3, mas Z3 recentemente mudou e agora incorpora a saída não-determinística. SBV mudou similarmente para permitir o não determinismo aqui. Altere os tipos das seguintes operações de ponto flutuante: Estas foram previamente codificadas como relações, uma vez que os valores NaN não eram representáveis ​​no domínio de destino de forma exclusiva. Enquanto era OK, era difícil usá-los. Nós agora simplesmente implementar essas funções como, e eles são underspecified se as entradas são NaNs: Nesses casos, nós simplesmente obter uma saída simbólica. Os novos tipos são: sFloatAsSWord32. SFloat - gt SWord32 sDoubleAsSWord64. SDouble - gt SWord64 blastSFloat. SFloat - gt (SBool, SBool, SBool) blastSDouble. SDouble - gt (SBool, SBool, SBool) MathSAT backend: Use a interpretação SMTLib de fp. min / fp. max passando explicitamente o argumento quot-theory. fp. minmax zero mode4quot. Corrigir um bug no hash-consing de constantes de ponto flutuante, onde estávamos confundindo 0 e -0, uma vez que estávamos usando-os como chaves no mapa, embora eles comparam igual. Agora, explicitamente, manter o controle do status negativo-zero para se certificar de que essa confusão não surgem. Observe que esse bug só se exibiu em ocorrências raras de ambas as constantes estar presentes em um benchmark um verdadeiro caso de canto. Observe que os valores de NaN também são interessantes neste contexto: Desde NaN / NaN, nós nunca hash-cons constantes de ponto flutuante que têm o valor NaN. Mas isso é realmente OK, é um pouco desperdício caso você tenha um monte de constantes NaN ao redor, mas não há problema de solidez: Nós apenas desperdiçar um pouco de espaço. Remova as funções allSatWithAny e allSatWithAll. Essas duas variantes não fazem sentido quando executadas com vários solucionadores, pois sequencializam internamente as soluções devido à natureza de allSat. Não é realmente necessário de qualquer maneira tão removido. As variantes satWithAny / All e proveWithAny / All ainda estão disponíveis. Exportar SMTLibVersion da biblioteca, a exportação esquecida necessária pelo Cryptol. Graças a Adam Foltzer para o patch. Modifique ligeiramente as saídas do modelo para que as variáveis ​​estejam alinhadas verticalmente. (Somente se houver nomes de variáveis ​​de modelo que sejam de comprimento diferente.) Mover para a infra-estrutura baseada em quotdockerquot Travis-CI para compilações Habilitar compilações locais para usar o plug-in Herbie. Atualmente SBV não tem nenhuma expressão que pode se beneficiar de Herbie, mas é bom ter esse apoio em geral. Versão 5.0, 2015-09-22 Nota: Trata-se de uma versão de compatibilidade com versões anteriores, consulte abaixo para obter detalhes. O SBV agora exige que o GHC 7.10.1 ou mais recente seja compilado, aproveitando os recursos / correções de bugs mais recentes no GHC. Se você realmente precisa do SBV para compilar com os GHCs mais antigos, entre em contato. SBV não suporta mais SMTLib1. Usamos exclusivamente o SMTLib2 para comunicação com solucionadores de backend. Estritamente falando, isso significa alguma perda de funcionalidade: Os modelos de função não-interpretada que nós apoiamos via Yices-1 não estão mais disponíveis. Na prática, esta facilidade não foi realmente utilizada, e exigiu uma versão muito antiga de Yices que não era mais suportada pelo SRI e faltou em outros recursos. Assim, na realidade esta mudança não deve importar para usuários finais. Adicionado função quotlabelquot, que é útil em emitir comentários em torno de expressões. É essencialmente um não-op, mas gera um comentário com o texto fornecido na saída SMT-Lib e C, para fins de diagnóstico. Adicionado quotsFromIntegralquot: Conversões de todos os tipos integrais (SInteger, SWord / Sins) entre si. Semelhante à função quotfromIntegralquot de Haskell. Estes geram moldes simples quando usados ​​na geração de código para C e, portanto, são muito eficientes. SBV já não suporta as funções sBranch / sAssert, como percebemos estas funções podem causar problemas de solidez sob certas condições. Embora os cenários de disparo não sejam casos de uso comuns para essas funções, estamos optando pela segurança e, assim, removendo o suporte. Veja github / LeventErkok / sbv / issues / 180 para detalhes e veja abaixo para a nova função isSatisfiableInCurrentPath. Uma nova função isSatisfiableInCurrentPath é adicionada, que verifica a satisfação durante uma execução de simulação simbólica. Esta função pode ser usada como base de sBranch / sAssert como funcionalidade se necessário. A diferença é que esta é uma chamada de nível muito inferior, e também expõe o fato de que o resultado está na mônada simbólica (que evita a questão da solidez). Naturalmente, o novo tipo torna menos útil, pois não será uma substituição para if-then-else como estrutura. Destinado a ser usado por ferramentas construídas em cima de SBV, em oposição aos usuários finais. SBV já não implementa a classe SignCast, como sua funcionalidade é substituída pela função sFromIntegral. Os programas que usam as funções signCast e unsignCast devem simplesmente substituir ambos com chamadas para sFromIntegral. (Observe que podem ser necessárias anotações de tipo extras, semelhantes aos usos da função fromIntegral no Haskell.) Alterações relacionadas ao solver do backend: Yices: Atualizado para trabalhar com a versão 2.4.1 do Yices. Observe que versões anteriores do Yices não são suportadas. Boolector: Atualizado para trabalhar com o novo Boolector versão 2.0.7. Observe que versões anteriores do Boolector não são suportadas. MathSAT: Atualizado para trabalhar com a versão mais recente 5.3.7. Observe que versões anteriores do MathSAT não são suportadas (devido a um problema de buffer no próprio MathSAT.) MathSAT: Ativado suporte de ponto flutuante no MathSAT. Adicionar Data. SBV. Examples. Puzzles. Birthday, que resolve o problema Cheryl-Aniversário que se tornou viral em abril de 2015. Acontece que realmente fácil de resolver para SMT, mas a formalização do problema ainda é interessante como um exercício de raciocínio formal. Adicionar Data. SBV. Examples. Puzzles. SendMoreMoney, que resolve o clássico enviar mais problema de dinheiro. Realmente um exemplo trivial, mas incluído desde que é muito bonito o hello-mundo para a limitação básica que resolve. Adicione Data. SBV. Examples. Puzzles. Fish, que resolve um enigma de lógica típico encontrando a solução original para um conjunto de afirmações feitas sobre um monte de pessoas, seus animais de estimação, escolhas de bebidas, etc Não particularmente interessante, mas poderia ser divertido para Brincar com para fins de modelagem. Adicionar Data. SBV. Examples. BitPrecise. MultMask, que demonstra o uso do solucionador bitvector para um problema bit-baralhar interessante. Rework aritmética ponto flutuante, e adicionar faltando em ponto flutuante operações: fpRem. Restante fpRoundToIntegral: truncating round fpMin. Min fpMax. Max fpIsEqualObject. FP igualdade como objeto (isto é, NaN é igual a NaN, 0 não é igual a -0, etc.) Isso traz SBV up-to par com tudo suportado pela teoria de FP de SMT-Lib. Adicione a classe IEEEFloatConvertable, que fornece conversões de / para Floats e outros tipos. (Ou seja, conversões de valor de todos os outros tipos para Floats e Doubles e vice-versa). Adicione SWord32 / SWord64 para / de conversões SFloat / SDouble, como reinterpretação de padrão de bits usando o formato de intercâmbio IEEE754. As funções são: sWord32AsSFloat, sWord64AsSDouble, sFloatAsSWord32, sDoubleAsSWord64. Note que o sWord32AsSFloat e sWord64ToSDouble são funções regulares, mas sFloatToSWord32 e sDoubleToSWord64 são quotrelationsquot, uma vez que valores NaN não são exclusivamente conversível. Adicionar sExtractBits, que leva uma lista de índices para extrair bits de, essencialmente equivalente ao mapa sTestBit. Renomeie um conjunto de funções simbólicas para consistência. Aqui estão os velhos novos nomes /: sbvTestBit --gt sTestBit sbvPopCount --gt sPopCount sbvShiftLeft --gt sShiftLeft sbvShiftRight --gt sShiftRight sbvRotateLeft --gt sRotateLeft sbvRotateRight --gt sRotateRight sbvSignedShiftArithRight --gt sSignedShiftArithRight Renomeie todos os reconhecedores FP para a Sincronização com operações FP. Aqui estão os velhos novos nomes /: isNormalFP --gt fpIsNormal isSubnormalFP --gt fpIsSubnormal isZeroFP --gt fpIsZero isInfiniteFP --gt fpIsInfinite isNaNFP --gt fpIsNaN isNegativeFP --gt fpIsNegative isPositiveFP --gt fpIsPositive isNegativeZeroFP --gt fpIsNegativeZero isPositiveZeroFP - - gt fpIsPositiveZero isPointFP --gt fpIsPoint Lotes de outros trabalhos em torno de ponto flutuante, casos de teste, reorganizar, etc. Introduzir variantes mais curtas para arredondamento modos: sRNE, Srna, SRTP, LRSR, aliases sRTZ para sRoundNearestTiesToEven, sRoundNearestTiesToAway, sRoundTowardPositive, sRoundTowardNegative, E sRoundTowardZero, respectivamente. Versão 4.4, 2015-04-13 Encaixe o pacote crackNum para que os contra-exemplos envolvendo flutuadores e duplos possam ser impressos em detalhes quando o printBase é escolhido para ser 2 ou 16. (Com a base 10, ainda temos a saída simples.) Prelude Data. SBVgt satWith z3 x - gt x. (2 :: SFloat) Satisfatório. Modelo: s0 2,0. Flutuar 3 2 1 0 1 09876543 21098765432109876543210 S --- E8 --- ---------- ---------- F23 binário: 0 10000000 00000000000000000000000 Hex: 4000 0000 Precisão: SP Entrar : positivo Exponent: 1 (armazenado: 128, polarização: 127) Valor: 2.0 (NORMAL) Alterar a forma como vamos imprimir informações tipo para modelos insted de stype apenas tipo de impressão (ou seja, para SWord8, em vez imprimir Word8), que faz mais sentido e é mais consistente. Esta alteração deve ser principalmente relevante como a forma como vemos a saída do contra-exemplo. Corrigir o bug de longa data 75, onde agora apoiamos arrays com fontes / destinos booleanos. Este não é um caso muito comumente usado, mas deixando o solucionador escolher a lógica, agora permitimos arrays para ser uniformemente apoiado. Versão 4.3, 2015-04-10 Introduzir Data. SBV. Dynamic, por Brian Huffman. Este é principalmente um reorg interno da base de código SBV, e os usuários finais não devem ser afetados pelas mudanças. A introdução da variante dinâmica SBV (isto é, que não exige um tipo de fantasma como em quotSBV Word8quot etc. permite que escritores biblioteca mais flexibilidade como eles lidam com tamanhos arbitrários pouco por vetores. A principal customor dessas mudanças são a linguagem Cryptol eo associado conjunto de ferramentas, mas outros desenvolvedores construindo em cima de SBV pode encontrá-lo útil também NB:. o aspecto quotstrongly-typedquot de SBV ainda é a principal forma os utilizadores finais devem interagir com SBV, e nada mudou nesse aspecto Adicionar variantes simbólicas de de ponto flutuante arredondamento modos para conveniência Rename toSReal para sIntegerToSReal, que capta a intenção mais claramente Código clean-up: remove mbMinBound / mbMaxBound permitindo assim menos chamadas para unliteral Contribuição de Brian Huffman introduzir funções de conversão FP:.. Entre sreal e SFloat / . SDouble fpToSReal sRealToSFloat sRealToSDouble Entre SWord32 e SFloat sWord32ToSFloat sFloatToSWord32 Entre SWord64 e SDouble (Relational, devido à NaNs não-exclusivo) sWord64ToSDouble sDoubleToSWord64 de float para assinar / expoente campos / mantissa: (relacional, devido à não-exclusivo NaNs) blastSFloat blastSDouble Rework Classificadores de ponto flutuante. Remover isSNaN e isFPPoint (ambos renomeado), e adicione as seguintes novas reconhecedores: isNormalFP isSubnormalFP isZeroFP isInfiniteFP isNaNFP isNegativeFP isPositiveFP isNegativeZeroFP isPositiveZeroFP isPointFP (corresponde a um número real, isto é, nem NaN nem infinito) Reimplementar sbvTestBit, por Brian Huffman. Esta versão é muito mais rápida em grandes tamanhos de palavras, pois evita a cara geração de máscaras. Alterações de código para suprimir avisos com GHC7.10. Limpeza geral. Versão 4.2, 2015-03-17 Adicionar exponenciação (.). Graças a Daniel Wagner por contribuir com o código Melhor manuseio de SBV SOLVER OPTIONS, em particular mantendo o controle de citações adequadas em variáveis ​​de ambiente. Graças a Adam Foltzer para o patch Silenciar alguns avisos hlint / ghci. Graças a Trevor Elliott para o patch Haddock documentação correções, melhorias, etc Alterar ABC default opção string para explosão quotampsweep - C 5000 ampsyn4 ampcec - s - m - C 2000quot que parece dar bons resultados. Use a variável de ambiente SBV ABC OPTIONS (ou através do arquivo abc. rc e uma combinação de SBV ABC OPTIONS) para experimentar. Versão 4.1, 2015-03-06 Adicionar suporte para o solucionador ABC de Berkeley. Graças a Adam Foltzer para a infra-estrutura exigida Veja: www. eecs. berkeley. edu/ alanmi / abc / E Alan Mishchenko para adicionar infra-estrutura para a ABC para trabalhar com SBV. Atualize a conexão Boolector para usar uma interação baseada em SMT-Lib2. NB. Você precisa de pelo menos Boolector 2.0.6 instalado Monitorando as mudanças na teoria de ponto flutuante SMT-Lib. Se você estiver usando tipos de ponto flutuante simbólicos (por exemplo, SFloat e SDouble), então você deve atualizar para esta versão e também obter uma versão mais recente (instável) do Z3. Consulte smtlib. cs. uiowa. edu/theories-FloatingPoint. shtml para obter detalhes. Introduza uma nova classe, RoundingFloat, que suporta operações de ponto flutuante com arredondamento arbitrário modos. Note-se que Haskell só permite RoundNearestTiesToAway, mas com SBV, temos todos os 5 IEEE754 arredondamento modos e todas as operações básicas (FPadd, FPmul, fpDiv, etc.) com estes modos. Permitir que o modo de arredondamento de ponto flutuante seja também simbólico Melhorar o exemplo quotData / SBV / Examples / Misc / Floating. hs para incluir o exemplo de adição com base em arredondamento. Alterações necessárias para tornar a compilação SBV com o GHC 7.10 principalmente em torno de declarações NFData de instância. Agradeço a Diatchki pelo patch. Exportar alguns símbolos adicionais a partir do módulo Internos (principalmente para uso Cryptol.) Versão 4.0, 2015/01/22 Este comunicado contém principalmente contribuições de Brian Huffman, permitindo que os usuários finais para definir novos tipos simbólicos, como Word4, que SBV faz Não nativamente apoio. Quando o GHC obtém literais de nível de tipo, provavelmente incorporaremos vetores arbitrários de tamanhos de bits usando este mecanismo, mas, entretanto, esta versão fornece um meio para os usuários introduzir instâncias individuais. Modificações para suportar vetores de tamanhos de bits arbitrários Essas mudanças foram contribuídas por Brian Huffman de Galois. Obrigado Brian. Um novo exemplo quotData / SBV / Examples / Misc / Word4.hsquot mostrando como os usuários podem adicionar novos tipos simbólicos. Suporte para rotação-esquerda / rotação-direita com quantidades de rotação variável. (De Brian Huffman.) Versão 3.5, 2015-01-15 Esta versão é principalmente adicionando suporte para tipos enumerados em Haskell sendo traduzido para os seus homólogos simbólicos em vez de ir completamente não interpretado. Acompanhe os detalhes do tipo de dados para tipos não interpretados. Rework o exemplo U2Bridge para usar enumerado tipos. O quotUninterpretedquot nome não faz mais sentido com essa alteração, portanto, retrabalhe os nomes relevantes para garantir nomeação interna adequada. Adicionar dados / SBV / Examples / Misc / Enumerate. hs como um exemplo para demonstrar como enumerações são traduzidas. Corrigir um bug de longa data na implementação do select quando traduzido como tabelas SMT-Lib. (Github questão 103.) Obrigado a Brian Huffman por relatar. Versão 3.4, 2014-12-21 Esta versão trata principalmente de alterações de ponto flutuante no SMT-Lib. Acompanhe as mudanças nas constantes padrão da nova lógica QFFPA e similares. Se você estiver usando a lógica de ponto flutuante, então você precisa de uma versão relativamente nova do Z3 instalado (4.3.3 ou mais recente). Adicionar unary-negação como um operador explícito. Anteriormente, usamos apenas a semântica quot0-xquot mas com ponto flutuante, isso não se mantém como 0-0 é 0 e não é -0 (Observe que o zero negativo é um valor de ponto flutuante válido, que é diferente de positivo - Zero ainda compara igual a ele. Sigh ..) Da mesma forma, adicionar abs como um método nativo para certificar-se de que mapeá-lo para fp. abs para valores de ponto flutuante. Melhorias no conjunto de testes Versão 3.3, 2014-12-05 Implementar seguro e seguroCom, que estaticamente determinar todas as chamadas para sAssert sendo seguro para executar. Desta forma, os usuários podem pimenta seus programas com chamadas liberais para sAssert e verificar que eles são todos seguros em um ir sem mais preocupações. Robustifique a interface para solucionadores externos, certificando-se de capturar casos em que o solucionador externo pode existir, mas não ser executável (falta de biblioteca, por exemplo). É impossível ser absolutamente infalível, mas agora pegamos mais alguns casos e falhamos graciosamente. Versão 3.2, 2014-11-18 Implementar sAssert. Isto adiciona a simulação simbólica condicional, assegurando condições booleanas arbitrárias durante a simulação semelhante a chamadas ASSERT em outros idiomas. Observe que as falhas serão detectadas no tempo de simulação simbólica, isto é, cada afirmação gerará uma chamada para o solucionador externo para garantir que a condição nunca seja violada. Se a violação for possível, o usuário receberá um erro, indicando as condições de falha. Também implementar sAssertCont que permite uma forma de programação para extrair / exibir resultados para os consumidores de sAssert. Enquanto o último simplesmente chama erro no caso de uma violação asserção, a variante sAssertCont tem uma continuação que pode ser usado para programar como os resultados devem ser interpretados / exibidos. Observe que o tipo de continuação é tal que a execução ainda deve parar, ou seja, uma vez que uma violação de asserção é detectada, a simulação simbólica nunca continuará. (Isto é útil para bibliotecas construídas em cima de SBV. Rework / simplificar a classe Mergeable para se certificar sBranch é suficientemente preguiçoso no caso de fusões estruturais. A implementação original era apenas preguiçosa na instância do Word, mas não nas listas / tuplas etc. Obrigado a Brian Huffman por relatar esse bug. Adicione algumas otimizações de dobramento constante para sDivand sRem Boolector: Modifique o analisador de saída de acordo com o novo formato de saída do Boolector. Isso significa que você precisa de pelo menos v2.0.0 do Boolector instalado se você quiser usar esse solucionador específico. Corrigir o erro de tradução de longa data referente às comparações booleanas da classe Ord. (Isto é, Falso gt Verdadeiro etc.) Enquanto Haskell permite isso, a SMT-Lib não e, portanto, temos que ter cuidado na tradução. Obrigado a Brian Huffman por relatar. Geração de código C: Traduza corretamente as funções de raiz quadrada e fusedMA para C. Versão 3.1, 2014-07-12 Nota: GHC 7.8.1 e 7.8.2 tem um erro grave ghc. haskell. org/trac/ghc/ticket/9078 Que faz SBV para falhar sob chamadas pesadas / repetidas. O bug é endereçado no GHC 7.8.3, portanto, atualizar para o GHC 7.8.3 é essencial para usar SBV Novos recursos / correções de bugs na v3.1: Usando solucionadores SMT múltiplos em paralelo: Funções adicionadas que permitem ao usuário executar vários resolvedores, Usando threads assíncronas. Todos os resultados podem ser obtidos (proveWithAll, proveWithAny, satWithAll), ou SBV pode retornar o resultado mais rápido (satWithAny, allSatWithAll, allSatWithAny). Estas funções são boas para jogar com vários resolvedores, especialmente em máquinas com múltiplos núcleos. Adicione função: sbvAvailableSolvers que retorna a lista de solucionadores atualmente disponíveis, conforme instalado na máquina que estamos executando. (Não a lista que SBV suporta, mas aqueles que estão realmente disponíveis em tempo de execução.) Esta função é útil com a API multi-resolve. Implementar sBranch: sBranch é uma variante do ite que consulta o solucionador SMT externo para ver se uma dada condição de ramificação é satisfazível antes de avaliá-la. Isto pode fazer certas entradas recursivas e, portanto, não-simbolicamente-terminais passíveis de simulação simbólica, se a terminação pode ser estabelecida desta maneira. Escusado será dizer que este problema é sempre decidível no que diz respeito aos programas SBV, mas isso não significa que o procedimento de decisão é barato Use com cuidado. O parâmetro de configuração sBranchTimeOut pode ser usado para reduzir longas execuções quando sBranch é usado. Naturalmente, se o tempo limite ocorrer, o SBV assumirá que o ramo é viável, caso em que a terminação simbólica pode voltar a mordê-lo.) Nova API: Adicionar predicado isSNaN que permite testar os valores SFloat / SDouble para nan-ness. Isso é semelhante à função Prelude isNaN, exceto que a versão Prelude requer uma instância do RealFrac, que infelizmente não é atualmente implementável para casos. (Requer funções trigonométricas etc.) Assim, nós fornecemos isSNaN separadamente (juntamente com o isFPPoint já existente) para simplificar o raciocínio com ponto flutuante. Exemplos: Adicionar dados / SBV / Examples / Misc / SBranch. hs, para ilustrar o uso do sBranch. Correções de bugs: Solução de problema de bloqueio de tubulação, que se exibiu na presença de um grande número de variáveis ​​(gt 10K ou assim). Ver a edição 86 de Github. Agradecimentos a Philipp Meyer para o relatório fino. Misc: Adicionar falta SFloat / SDouble instâncias para SatModel classe Explicitamente apoiar KBool como um tipo, separando-o de quotKUnbounded False 1quot. Obrigado a Brian Huffman por contribuir com as mudanças. Isso não deve ter impacto visível para o usuário, mas é útil por razões internas. Versão 3.0, 2014-02-16 Suporte para números de ponto flutuante: Suporte preliminar para aritmética de ponto flutuante IEEE, introduzindo os tipos SFloat e SDouble. O suporte ainda é bastante novo, eo Z3 é o único solucionador que atualmente possui um solucionador para essa lógica. É provável que haja bugs, tanto no nível SBV, quanto no nível Z3, de modo que qualquer relatório de bugs seja bem-vindo Novos solucionadores de backend: SBV agora suporta MathSAT da Fondazione Bruno Kessler e DISI-Universidade de Trento. Veja: mathsat. fbk. eu/ Apoie todas as chamadas sat na presença de tipos não interpretados: Implementar melhor suporte para allSat na presença de tipos não interpretados. Anteriormente, o SBV simplesmente rejeitou a execução de consultas allSat na presença de tipos não interpretados, uma vez que não foi possível gerar um modelo de refutação. O modelo retornado pelo solucionador SMT simplesmente não é utilizável, uma vez que nomeia constantes que não são visíveis em uma execução subseqüente. Eric Seidel criou a idéia de que podemos realmente calcular classes de equivalência com base em um modelo produzido e afirmar a restrição de que o novo modelo deve desautorizar as classes de equivalência encontradas anteriormente. A idéia parece funcionar bem na prática, e há também um programa de exemplo demonstrando a funcionalidade: Exemplos / Uninterpreted / UISortAllSat. hs Melhorias de extração de modelo programável: Adicionar funções getModelDictionary e getModelDictionaries. Que fornecem acesso de baixo nível aos modelos retornados de solucionadores SMT. Antigo para chamadas sat e provar, último para chamadas allSat. Juntamente com os utils exportados a partir do módulo Data. SBV. Internals, isso deve permitir que usuários especializados para dissecar os modelos retornados e fazer programação mais sofisticado em cima de SBV. Adicione getModelValue. GetModelValues. GetModelUninterpretedValue. E getModelUninterpretedValues ​​que mais ajuda na extração de valor do modelo. Outro: Permite aos usuários especificar a lógica de SMT-Lib a ser usada, se necessário. SBV ainda vai escolher a lógica automaticamente, mas os usuários podem agora substituir essa escolha. Vem a calhar quando jogar com lógicas personalizadas. Bug fixes: Address allsat-laziness issue (78 in github issue tracker). Essentially, simplify how all-sat is called so we can avoid calling the solver for solutions that are not needed. Thanks to Eric Seidel for reporting. Examples: Add Data/SBV/Examples/Misc/ModelExtract. hs as a simple example for programmable model extraction and usage. Add Data/SBV/Examples/Misc/Floating. hs for some FP examples. Use the AUFLIA logic in Examples. Existentials. Diophantine which helps z3 complete the proof quickly. (The BV logics take too long for this problem.) Version 2.10, 2013-03-22 Add support for the Boolector SMT solver See: fmv. jku. at/boolector/ Use import Data. SBV. Bridge. Boolector to use Boolector from SBV Boolector supports QFBV (with an without arrays). In the last SMT-Lib competition it won both bit-vector categories. It is definitely worth trying it out for bitvector problems. Changes to the library: Generalize types of allDifferent and allEqual to take arbitrary EqSymbolic values. (Previously was just over SBV values.) Add inRange predicate, which checks if a value is bounded within two others. Add sElem predicate, which checks for symbolic membership Add fullAdder. Returns the carry-over as a separate boolean bit. Add fullMultiplier. Returns both the lower and higher bits resulting from multiplication. Use the SMT-Lib Bool sort to represent SBool, instead of bit-vectors of length 1. While this is an under-the-hood mechanism that should be user-transparent, it turns out that one can no longer write axioms that return booleans in a direct way due to this translation. This change makes it easier to write axioms that utilize booleans as there is now a 1-to-1 match. (Suggested by Thomas DuBuisson.) Solvers changes: Z3: Update to the new parameter naming schema of Z3. This implies that you need to have a really recent version of Z3 installed, something in the Z3-4.3 series. Examples: Add Examples/Uninterpreted/Shannon. hs: Demonstrating Shannon expansion, boolean derivatives, etc. Bug-fixes: Gracefully handle the case if the backend-SMT solver does not put anything in stdout. (Reported by Thomas DuBuisson.) Handle uninterpreted sort values, if they happen to be only created via function calls, as opposed to being inputs. (Reported by Thomas DuBuisson.) Version 2.9, 2013-01-02 Add support for the CVC4 SMT solver from New York University and the University of Iowa. cvc4.cs. nyu. edu/. NB. Z3 remains the default solver for SBV. To use CVC4, use the With variants of the interface (i. e. proveWith, satWith. ) by passing cvc4 as the solver argument. (Similarly, use yices as the argument for the With functions for invoking yices.) Latest release of Yices calls the SMT-Lib based solver executable yices-smt. Updated the default value of the executable to have this name for ease of use. Add an extra boolean flag to compileToSMTLib and generateSMTBenchmarks functions to control if the translation should keep the query as is (for SAT cases), or negate it (for PROVE cases). Previously, this value was hard-coded to do the PROVE case only. Add bridge modules, to simplify use of different solvers. You can now say: to pick the appropriate default solver. if you simply import Data. SBV, then you will get the default SMT solver, which is currently Z3. The value defaultSMTSolver refers to z3 (currently), and sbvCurrentSolver refers to the chosen solver as determined by the imported module. (The latter is useful for modifying options to the SMT solver in an solver-agnostic way.) Various improvements to Z3 model parsing routines. New web page for SBV: leventerkok. github/sbv/ is now online. Version 2.8, 2012-11-29 Rename the SNum class to SIntegral, and make it index over regular types. This makes it much more useful, simplifying coding of polymorphic symbolic functions over integral types, which is the common case. Add the functions: sbvShiftLeft sbvShiftRight which can accommodate unsigned symbolic shift amounts. Note that one cannot use the Haskell shiftL/shiftR functions from the Bits class since they are hard-wired to take Int values as the shift amounts only. Add a new function sbvArithShiftRight, which is the same as a shift-right, except it uses the MSB of the input as the bit to fill in (instead of always filling in with 0 bits). Note that this is the same as shiftRight for signed values, but differs from a shiftRight when the input is unsigned. (There is no Haskell analogue of this function, as Haskell shiftR is always arithmetic for signed types and logical for unsigned ones.) This variant is designed for use cases when one uses the underlying unsigned SMT-Lib representation to implement custom signed operations, for instance. Several typo fixes. Version 2.7, 2012-10-21 Add missing QuickCheck instance for SReal When dealing with concrete SReals, make sure to operate only on exact algebraic reals on the Haskell side, leaving true algebraic reals (i. e. those that are roots of polynomials that cannot be expressed as a rational) symbolic. This avoids issues with functions that we cannot implement directly on the Haskell side, like exact square-roots. Documentation tweaks, typo fixes etc. Rename BVDivisible class to SDivisible since SInteger is also an instance of this class, and SDivisible is a more appropriate name to start with. Also add sQuot and sRem methods along with sDivMod, sDiv, and sMod, with usual semantics. Improve test suite, adding many constant-folding tests and start using cabal based tests (--enable-tests option.) Versions 2.4, 2.5, and 2.6: Around mid October 2012 Workaround issues related hackage compilation, in particular to the problem with the new containers package release, which does provide an NFData instance for sequences. Add explicit Num requirements when necessary, as the Bits class no longer does this. Remove dependency on the hackage package strict-concurrency, as hackage can no longer compile it due to some dependency mismatch. Add forgotten Real class instance for the type AlgReal Stop putting bounds on hackage dependencies, as they cause more trouble then they actually help. (See the discussion here: www. haskell. org/pipermail/haskell-cafe/2012-July/102352 .) Version 2.3, 2012-07-20 Maintanence release, no new features. Tweak cabal dependencies to avoid using packages that are newer than those that come with ghc-7.4.2. Apparently this is a no-no that breaks many things, see the discussion in this thread: www. haskell. org/pipermail/haskell-cafe/2012-July/102352 In particular, the use of containers gt 0.5 is not OK until we have a version of GHC that comes with that version. Version 2.2, 2012-07-17 Maintanence release, no new features. Update cabal dependencies, in particular fix the regression with respect to latest version of the containers package. Version 2.1, 2012-05-24 Library: Add support for uninterpreted sorts, together with user defined domain axioms. See Data. SBV. Examples. Uninterpreted. Sort and Data. SBV. Examples. Uninterpreted. Deduce for basic examples of this feature. Add support for C code-generation with SReals. The user picks one of 3 possible C types for the SReal type: CgFloat, CgDouble or CgLongDouble, using the function cgSRealType. Naturally, the resulting C program will suffer a loss of precision, as it will be subject to IEE-754 rounding as implied by the underlying type. Add toSReal. SInteger - gt SReal, which can be used to promote symbolic integers to reals. Comes handy in mixed integer/real computations. Examples: Recast the dog-cat-mouse example to use the solver over reals. Add Data. SBV. Examples. Uninterpreted. Sort, and Data. SBV. Examples. Uninterpreted. Deduce for illustrating uninterpreted sorts and axioms. Version 2.0, 2012-05-10 This is a major release of SBV, adding support for symbolic algebraic reals: SReal. See en. wikipedia. org/wiki/Algebraicnumber for details. In brief, algebraic reals are solutions to univariate polynomials with rational coefficients. The arithmetic on algebraic reals is precise, with no approximation errors. Note that algebraic reals are a proper subset of all reals, in particular transcendental numbers are not representable in this way. (For instance, quotsqrt 2quot is algebraic, but pi, e are not.) However, algebraic reals is a superset of rationals, so SBV now also supports symbolic rationals as well. You should use Z3 v4.0 when working with real numbers. While the interface will work with older versions of Z3 (or other SMT solvers in general), it uses Z3 root-obj construct to retrieve and query algebraic reals. While SReal values have infinite precision, printing such values is not trivial since we might need an infinite number of digits if the result happens to be irrational. The user controls printing precision, by specifying how many digits after the decimal point should be printed. The default number of decimal digits to print is 10. (See the printRealPrec field of SMT-solver configuration.) The acronym SBV used to stand for Symbolic Bit Vectors. However, SBV has grown beyond bit-vectors, especially with the addition of support for SInteger and SReal types and other code-generation utilities. Therefore, quotSMT Based Verificationquot is now a better fit for the expansion of the acronym SBV. Other notable changes in the library: Add functions sTYPE and sTYPEs for each symbolic type we support (i. e. sBool, sBools, sWord8, sWord8s, etc.), to create symbolic variables of the right kind. Strictly speaking these are just synonyms for free and mapM free (plural versions), so they are not adding any additional power. Except, they are specialized at their respective types, and might be easier to remember. Add function solve, which is merely a synonym for (return. bAnd), but it simplifies expressing problems. Add class SNum, which simplifies writing polymorphic code over symbolic values Increase haddock coverage metrics Major code refactoring around symbolic kinds SMTLib2: Emit quot:produce-modelsquot call before setting the logic, as required by the SMT-Lib2 standard. Patch provided by arrowdodger on github, thanks Performance Use a much simpler default definition for quotselectquot: While the older version (based on binary search on the bits of the indexer) was correct, it created unnecessarily big expressions. Since SBV does not have a notion of concrete subwords, the binary-search trick was not bringing any advantage in any case. Instead, we now simply use a linear walk over the elements. Change dog-cat-mouse example to use SInteger for the counts Add merge-sort example: Data. SBV. Examples. BitPrecise. MergeSort Add diophantine solver example: Data. SBV. Examples. Existentials. Diophantine Version 1.4, 2012-05-10 Interim release for test purposes Version 1.3, 2012-02-25 Workaround cabal/hackage issue, functionally the same as release 1.2 below Version 1.2, 2012-02-25 Add a hook so users can add custom script segments for SMT solvers. The new quotsolverTweaksquot field in the SMTConfig data-type can be used for this purpose. The need for this came about due to the need to workaround a Z3 v3.2 issue detalied below: stackoverflow/questions/9426420/soundness-issue-with-integer-bv-mixed-benchmarks As a consequence, mixed Integer/BV problems can cause soundness issues in Z3 and does in SBV. Unfortunately, it is too severe for SBV to add the woraround option, as it slows down the solver as a side effect as well. Thus, we are making this optionally available if/when needed. (Note that the work-around should not be necessary with Z3 v3.3 which is not released yet.) Other minor clean-up Version 1.1, 2012-02-14 Rename bitValue to sbvTestBit Add sbvPopCount Add a custom implementation of popCount for the Bits class instance of SBV (GHC gt 7.4.1 only) Add sbvCheckSolverInstallation, which can be used to check that the given solver is installed and good to go. Add generateSMTBenchmarks, simplifying the generation of SMTLib benchmarks for offline sharing. Version 1.0, 2012-02-13 Z3 is now the quotdefaultquot SMT solver. Yices is still available, but has to be specifically selected. (Use satWith, allSatWith, proveWith, etc.) Better handling of the pConstrain probability threshold for test case generation and quickCheck purposes. Add renderTest, which accompanies genTest to render test vectors as Haskell/C/Forte program segments. Add expectedValue which can compute the expected value of a symbolic value under the given constraints. Useful for statistical analysis and probability computations. When saturating provable values, use forAll for proofs and forSome for sat/allSat. (Previously we were allways using forAll, which is not incorrect but less intuitive.) add function: extractModels. SatModel a gt AllSatResult - gt a which simplifies accessing allSat results greatly. add quotcgGenerateMakefilequot which allows the user to choose if SBV should generate a Makefile. (default: True) Changes to make it compile with GHC 7.4.1. Version 0.9.24, 2011-12-28 Add quotforSome, quot analogous to quotforAll. quot (The name quotexistsquot wouldve been better, but its already taken.) This is not as useful as one might think as forAll and forSome do not nest, as an inner application of one pushes its argument to a Predicate, making the outer one useless, but it is nonetheless useful by itself. Add a quotModelablequot class, which simplifies model extraction. Add support for quick-check at the quotSymbolic SBoolquot level. Previously SBV only allowed functions returning SBool to be quick-checked, which forced a certain style of coding. In particular with the addition of quantifiers, the new coding style mostly puts the top-level expressions in the Symbolic monad, which were not quick-checkable before. With new support, the quickCheck, prove, sat, and allSat commands are all interchangeable with obvious meanings. Add support for concrete test case generation, see the genTest function. Improve optimize routines and add support for iterative optimization. Add quotconstrainquot, simplifying conjunctive constraints, especially useful for adding constraints at variable generation time via forall/exists. Note that the interpretation of such constraints is different for genTest and quickCheck functions, where constraints will be used for appropriately filtering acceptable test values in those two cases. Add quotpConstrainquot, which probabilistically adds constraints. This is useful for quickCheck and genTest functions for filtering acceptable test values. (Calls to pConstrain will be rejected for sat/prove calls.) Add quotisVacuousquot which can be used to check that the constraints added via constrain are satisfable. This is useful to prevent vacuous passes, i. e. when a proof is not just passing because the constraints imposed are inconsistent. (Also added accompanying isVacuousWith.) Add quotfreequot and quotfree quot, analogous to quotforall/forall quot and quotexists/existsquot The difference is that free behaves universally in a proof context, while it behaves existentially in a sat context. This allows us to express properties more succinctly, since the intended semantics is usually this way depending on the context. (i. e. in a proof, we want our variables universal, in a sat call existential.) Of course, exists/forall are still available when mixed quantifiers are needed, or when the user wants to be explicit about the quantifiers. Add Data/SBV/Examples/Puzzles/Coins. hs. (Shows the usage of quotconstrainquot.) Bump up random package dependency to 1.0.1.1 (from 1.0.0.2) Major reorganization of files to and build infrastructure to decrease build times and better layout Get rid of custom Setup. hs, just use simple build. The extra work was not worth the complexity. Version 0.9.23, 2011-12-05 Add support for SInteger, the type of signed unbounded integer values. SBV can now prove theorems about unbounded numbers, following the semantics of Haskell Integer type. (Requires z3 to be used as the backend solver.) Add functions optimize, maximize, and minimize that can be used to find optimal solutions to given constraints with respect to a given cost function. Add cgUninterpret, which simplifies code generation when we want to use an alternate definition in the target language (i. e. C). This is important for efficient code generation, when we want to take advantage of native libraries available in the target platform. Change getModel to return a tuple in the success case, where the first component is a boolean indicating whether the model is quotpotential. quot This is used to indicate that the solver actually returned quotunknownquot for the problem and the model might therefore be bogus. Note that we did not need this before since we only supported bounded bit-vectors, which has a decidable theory. With the addition of unbounded Integers and quantifiers, the solvers can now return unknown. This should still be rare in practice, but can happen with the use of non-linear constructs. (i. e. multiplication of two variables.) Version 0.9.22, 2011-11-13 The major change in this release is the support for quantifiers. The SBV library no longer assumes all variables are universals in a proof, (and correspondingly existential in a sat) call. Instead, the user marks free-variables appropriately using forall/exists functions, and the solver translates them accordingly. Note that this is a non-backwards compatible change in sat calls, as the semantics of formulas is essentially changing. While this is unfortunate, it is more uniform and simpler to understand in general. This release also adds support for the Z3 solver, which is the main SMT-solver used for solving formulas involving quantifiers. More formally, we use the new AUFBV/ABV/UFBV logics when quantifiers are involved. Also, the communication with Z3 is now done via SMT-Lib2 format. Eventually the SMTLib1 connection will be severed. The other main change is the support for C code generation with uninterpreted functions enabling users to interface with external C functions defined elsewhere. See below for details. Change getModel, so it returns an Either value to indicate something went wrong instead of throwing an error Add support for computing CRCs directly (without needing polynomial division). Add quotcgGenerateDriverquot function, which can be used to turn on/off driver program generation. Default is to generate a driver. (Issue quotcgGenerateDriver Falsequot to skip the driver.) For a library, a driver will be generated if any of the constituent parts has a driver. Otherwise it will be skipped. Fix a bug in C code generation where quotNotquot over booleans were incorrectly getting translated due to need for masking. Add support for compilation with uninterpreted functions. Users can now specify the corresponding C code and SBV will simply call the quotnativequot functions instead of generating it. This enables interfacing with other C programs. See the functions: cgAddPrototype, cgAddDecl, cgAddLDFlags Add CRC polynomial generation example via existentials Add USB CRC code generation example, both via polynomials and using the internal CRC functionality Version 0.9.21, 2011-08-05 Allow for inclusion of user makefiles Allow for CCFLAGS to be set by the user Other minor clean-up Version 0.9.20, 2011-06-05 Regression on 0.9.19 add missing file to cabal Version 0.9.19, 2011-06-05 Add SignCast class for conversion between signed/unsigned quantities for same-sized bit-vectors Add full-binary trees that can be indexed symbolically (STree). The advantage of this type is that the reads and writes take logarithmic time. Suitable for implementing faster symbolic look-up. Expose HasSignAndSize class through Data. SBV. Internals Many minor improvements, file re-orgs Add sentence-counting example Add an implementation of RC4 Version 0.9.18, 2011-04-07 Re-engineer code-generation, and compilation to C. In particular, allow arrays of inputs to be specified, both as function arguments and output reference values. Add support for generation of generation of C-libraries, allowing code generation for a set of functions that work together. Update code-generation examples to use the new API. Include a library-generation example for doing 128-bit AES encryption Version 0.9.17, 2011-03-29 Simplify and reorganize the test suite Improve AES decryption example, by using table-lookups in InvMixColumns. Version 0.9.16, 2011-03-28 Further optimizations on Bits instance of SBV Add AES algorithm as an example, showing how encryption algorithms are particularly suitable for use with the code-generator Version 0.9.15, 2011-03-24 Fix rotateL/rotateR instances on concrete words. Previous versions was bogus since it relied on the Integer instance, which does the wrong thing after normalization. Fix conversion of signed numbers from bits, previous version did not handle twos complement layout correctly Add a sleuth of concrete test cases on arithmetic to catch bugs. (There are many of them, 30K, but they run quickly.) Version 0.9.14, 2011-03-19 Reimplement sharing using Stable names, inspired by the Data. Reify techniques. This avoids tricks with unsafe memory stashing, and hence is safe. Thus, issues with respect to CAFs are now resolved. Version 0.9.13, 2011-03-16 Make sure SBool short-cut evaluations are done as early as possible, as these help with coding recursion-depth based algorithms, when dealing with symbolic termination issues. Add fibonacci code-generation example, original code by Lee Pike. Add a GCD code-generation/verification example Version 0.9.12, 2011-03-10 Add support for compilation to C Add a mechanism for offline saving of SMT-Lib files Output naming bug, reported by Josef Svenningsson Specification bug in Legatos multipler example Version 0.9.11, 2011-02-16 Make ghc-7.0 happy, minor re-org on the cabal file/Setup. hs Version 0.9.10, 2011-02-15 Integrate commits from Iavor: Generalize SBVs to keep track the integer directly without resorting to different leaf types Remove the unnecessary CLC instruction from the Legato example More tests Version 0.9.9, 2011-01-23 Support for user-defined SMT-Lib axioms to be specified for uninterpreted constants/functions Move to using doctest style inline tests Version 0.9.8, 2011-01-22 Better support for uninterpreted-functions Support counter-examples with SArrays Ladner-Fischer scheme example Documentation updates Version 0.9.7, 2011-01-18 First stable public hackage release Versions 0.0.0 - 0.9.6, Mid 2010 through early 2011 Basic infrastructure, design exploration

No comments:

Post a Comment