Feynman é um kit de ferramentas para análise de circuitos quânticos no modelo integral de caminho da mecânica quântica. O kit de ferramentas compreende métodos de síntese, otimização e verificação baseados em representações de ações de circuito como somas sobre caminhos.
São possíveis duas formas de interface com o projeto Feynman. Ferramentas autônomas construídas em Feynman, encontradas em ferramentas, fornecem interfaces de linha de comando para otimizar e/ou verificar circuitos quânticos, ou a biblioteca Feynman pode ser importada e usada diretamente em outros projetos Haskell.
O projeto Feynman requer GHC >=8.0.2 e Cabal >=1.24.0. Versões mais antigas do GHC podem funcionar, mas não foram testadas.
A biblioteca Feynman e executáveis binários para otimização ( feynopt
) e verificação ( feynver
) podem ser instalados globalmente com
cabal install
ou por meio de uma série de comandos um pouco mais refinada
cabal configure
cabal build
cabal install
O inferno de dependências é um problema comum em Haskell, então versões anteriores do Cabal tinham a opção de criar explicitamente uma sandbox local onde as dependências de pacotes seriam instaladas sem causar problemas para outros pacotes. Para instalar as dependências do Feynman em uma sandbox, antes de compilar ou instalar o Feynman, execute primeiro
# Cabal 1 & 2
cabal sandbox init
cabal install --only-dependencies
# Cabal 3
cabal v1-sandbox init
cabal install --only-dependencies
Por padrão, Cabal instala os binários em ~/cabal/bin/
para compilações unix. Para especificar outra pasta, instale com
cabal install --installdir=DIR
Feynman atualmente possui frontends para openQASM e .qc. Exemplos de ambos podem ser encontrados na pasta benchmarks.
Para executar o otimizador Feynman feynopt
em um arquivo .qc ou openQASM, execute o comando
feynopt <filename>.(qc | qasm)
feynopt
reconhece automaticamente as extensões .qc e .qasm como arquivos .qc e openQASM, respectivamente.
Para obter uma lista de todas as otimizações e transformações disponíveis, use o comando
feynopt -h
A ferramenta binária feynver
permite a verificação de equivalência de arquivos de circuitos separados. O uso padrão é
feynver <filename1>.qc <filename2>.qc
Os circuitos de entrada devem concordar com os nomes das entradas primárias (ou seja, qubits não inicializados), mas podem usar ancillas diferentes.
Nota: atualmente feynver
suporta apenas o frontend .qc
O repositório Feynman vem com um conjunto de benchmarks de circuitos quânticos, encontrados na pasta benchmarks
. Para obter mais informações sobre os benchmarks, o usuário é direcionado para Métodos Formais em Projeto de Circuitos Quânticos.
O conjunto de benchmarks também inclui exemplos de circuitos openQASM, retirados do repositório openQASM do github.
Feynman é uma coleção de algoritmos e técnicas que abrange vários artigos. Se você deseja citar em um artigo acadêmico, os artigos relevantes estão listados abaixo.
Mateus Amy