This page describes naming rules and conventions that exist throughout Cirq. These rules are important in order to maintain a consistent interface that is easy to use. By using consistent naming, we can reduce cognitive load on users and developers. Please try to use these terms when writing code.

If you have suggestions for improvements or changes, please create a PR to modify this list or open an issue.

## Quantum computing terms

- Use
`state_vector`

to describe a pure state.**Do not**use`wavefunction`

,`wave_function`

, or`state`

for this object (`state`

is too overloaded). - If the object is an array or possibly a computational basis state
(given by an
`int`

), use`state_rep`

or, if it is the initial state of a system`initial_state`

. - A function argument (
`state_vector`

,`state_rep`

, or`initial_state`

) should permit any of the possible representations of a state: A numpy array, a numpy tensor, an integer representing a qubit-system's computational basis state, a sequence of n integers representing a qudit's basis state, or a`cirq.ProductState`

. The type annotation should be`cirq.STATE_VECTOR_LIKE`

and you should use`cirq.to_valid_state_vector`

to canonicalize as a numpy array of amplitudes. If a function expects a numpy array of amplitudes, its type annotation should be`np.ndarray`

. - Use
`density_matrix`

to describe a mixed state that is passed in as a numpy matrix or numpy tensor.**Do not**used`mixed_state`

,`density_operator`

, or`state`

.