# Introduction

QuantumOptics.jl is a numerical framework written in Julia that makes it easy to simulate various kinds of quantum systems. It is similar to the Quantum Optics Toolbox for MATLAB and its Python successor QuTiP.

One of the core concepts of QuantumOptics.jl is that all quantum objects, i.e. state vectors and operators have knowledge about which Hilbert space they live in. This prevents many common mistakes when working with composite systems and at the same time improves readability. The Hilbert spaces are defined implicitly by specifying appropriate bases like a FockBasis or a SpinBasis. These bases can in turn be combined to describe composite systems like e.g. a particle in a cavity or a multi-spin system. The different kinds of bases that are implemented are introduced in Quantum systems.

After choosing a basis, QuantumOptics.jl provides many useful functions to create common States and Operators which can be combined in all the expected ways. Consequently, constructing arbitrary Hamiltonians and Liouvillians and specifying initial states is straightforward. These objects can be used to perform a Time-evolution.

Although the main focus is on simulating dynamics of (open) quantum systems, there are nevertheless additional features available, for example to calculate a Steady state or Two-time correlation functions.

For a quick introduction it is probably best to start reading the Tutorial. It shows a typical approach to study a quantum system and provides links to the corresponding topics in the documentation.