TL; DR: Escreva análises de programa baseados em SMT (executores simbólicos, verificações do tipo refinamento, etc.) em uma linguagem otimizada do tipo Datalog.
O Datalog provou ser um idioma útil para implementar uma variedade de análises do programa, mas as análises que usam a solução de SMT não podem ser facilmente escritas em versões tradicionais do Datalog. O Formulog se propõe a preencher essa lacuna, aumentando o Datalog com maneiras de construir e raciocinar sobre fórmulas SMT, bem como alguma programação funcional de primeira ordem para facilitar a vida.
Por que escrever sua análise baseada em SMT em Formulog?
Interessado? Para obter mais informações, consulte os documentos do Formulog (também disponível no diretório DOCS), incluindo dicas sobre como começar e a referência do idioma. Para ter uma sensação para o que está envolvido na construção de uma análise não baseada em SMT em Formulog, confira nosso tutorial sobre como implementar um verificador do tipo refinamento no Formulog.
As contribuições para este projeto são muito bem -vindas! Abra um problema do Github e, em seguida, vincule uma solicitação de tração a ele. As solicitações de tração devem estar no formato do Google Java antes de serem mescladas. Para reformular seu código, execute mvn spotless:apply ; Você também pode verificar se o seu código está conforme (sem reformatá -lo) executando mvn spotless:check .
O Formulog é liberado sob uma licença Apache 2.0.
Este projeto usa bibliotecas de terceiros. Você pode gerar uma lista dessas bibliotecas e baixar suas licenças associadas com este comando:
mvn license:download-licenses
O conteúdo gerado pode ser encontrado no target/generated-resources/ .