Git Product home page Git Product logo

qthought's Introduction

QThought - a platform to simulate thought experiments with quantum agents

We introduce a software package that allows users to design and run simulations of thought experiments in quantum theory. In particular, it covers cases where reasoning agents are modelled as quantum systems, such as Wigner's friend experiment. Users can customize the protocol of the experiment, the inner workings of agents (e.g.\ the quantum circuit that models their reasoning process), the abstract logical system used (which may or not allow agents to combine premises and make inferences about each other's reasoning), and the interpretation of quantum theory used by different agents (for example collapse, Copenhagen, many worlds or Bohmian mechanics). The software is written in a quantum programming language, ProjectQ, and as such the simulations of thought experiments can in principle run on quantum hardware.

Getting started

Our software platform is based on ProjectQ. To install it, please follow the instructions in Tutorials. To access Jupyter notebooks, follow guidelines at the Jupyter website.

To install the pre-alpha version, you can use

pip install -i https://test.pypi.org/simple/ qthought

Alternatively, you can clone this github repository to your local machine, navigate to within the qthought folder and call

pip install .

Documentation and examples

The project is structured as follows: users can customize the protocol of the experiment, the inner workings of agents (e.g. the quantum circuit that models their reasoning process), the abstract logical system used (which may or not allow agents to combine premises and make inferences about each other's reasoning), and the interpretation of quantum theory used by different agents (for example collapse, Copenhagen, many worlds or Bohmian mechanics). In the corresponding folders, we give examples of how one can program all of the mentioned above, and a PDF file with a technical explanation; the list of the examples is going to extend over time. Additionally, all protocols are accompannied by a Jupyter notebook, explaining every step in a simple fashion.

  1. Schematic software structure and motivation: qthought/software_structure

  2. Protocol examples:

  3. Consistency rules, logical reasoning:

  4. Interpretations:

Basic elements to run

To run the protocol, one needs to: - specify the interpretation, namely observe, forward_inference and backward_inference in your interpretation description file; - specify the logic employed by agents, namely the method their predictions are glued together in consistency; - describe the protocol by summing it out of elements (some of them call observe, forward_inference,backward_inference and consistency) of ProtocolStep class.

If your protocol is correct and meets the requirements elaborated on in Requirements class, it yeilds the prediction after a run.

For detailed instructions for how to assemble the protocol, please refer to the explanation provided in the Jupyter notebook simple example I.

Current state of development

We have currently implemented two interpretations, namely, Copenhagen and collapse, and one model of logical reasoning (classical modal logic). Additionally, we have three example protocols that one can run on their own.

In the future releases, we plan to extend this list by adding Bohmian mechanics and many-worlds interpretations, and weakening the logical reasoning structure.

Please cite

When using QThought for research projects, please cite this repository.

Authors

The first release of QThought was developed by Simon Mathis, Nuriya Nurgalieva, Lídia del Rio and Renato Renner at ETH Zürich.

License

QThought is licensed under the MIT License.

qthought's People

Contributors

jangnur avatar croydon-brixton avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.