---
title: InstructionSet (v1.4)
description: API reference for qiskit.circuit.InstructionSet in qiskit v1.4
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/1.4/qiskit.circuit.InstructionSet
---

# InstructionSet

*class* `qiskit.circuit.InstructionSet(*, resource_requester=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.4/qiskit/circuit/instructionset.py#L29-L179)

Bases: [`object`](https://docs.python.org/3/library/functions.html#object)

Instruction collection, and their contexts.

New collection of instructions.

The context (`qargs` and `cargs` that each instruction is attached to) is also stored separately for each instruction.

**Parameters**

**resource\_requester** (*Callable\[...,* [*ClassicalRegister*](/docs/api/qiskit/1.4/circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister")  *|*[*Clbit*](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit")*] | None*) –

A callable that takes in the classical resource used in the condition, verifies that it is present in the attached circuit, resolves any indices into concrete [`Clbit`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") instances, and returns the concrete resource. If this is not given, specifying a condition with an index is forbidden, and all concrete [`Clbit`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") and [`ClassicalRegister`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") resources will be assumed to be valid.

> **Note**
>
> The callback `resource_requester` is called once for each call to [`c_if()`](#qiskit.circuit.InstructionSet.c_if "qiskit.circuit.InstructionSet.c_if"), and assumes that a call implies that the resource will now be used. It may throw an error if the resource is not valid for usage.

## Attributes

### cargs

Legacy getter for the cargs components of an instruction set. This does not support mutation.

### instructions

Legacy getter for the instruction components of an instruction set. This does not support mutation.

### qargs

Legacy getter for the qargs components of an instruction set. This does not support mutation.

## Methods

### add

`add(instruction, qargs=None, cargs=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.4/qiskit/circuit/instructionset.py#L75-L83)

Add an instruction and its context (where it is attached).

### c\_if

`c_if(classical, val)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.4/qiskit/circuit/instructionset.py#L109-L155)

Set a classical equality condition on all the instructions in this set between the [`ClassicalRegister`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") or [`Clbit`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") `classical` and value `val`.

> **Note**
>
> You should prefer to use the [`QuantumCircuit.if_test()`](/docs/api/qiskit/1.4/qiskit.circuit.QuantumCircuit#if_test "qiskit.circuit.QuantumCircuit.if_test") builder interface, rather than using this method.

> **Note**
>
> This is a setter method, not an additive one. Calling this multiple times will silently override any previously set condition on any of the contained instructions; it does not stack.

> **Deprecated since version 1.3.0**
>
> The method `qiskit.circuit.instructionset.InstructionSet.c_if()` is deprecated as of qiskit 1.3.0. It will be removed in 2.0.0.

**Parameters**

- **classical** ([*Clbit*](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit")  *|*[*ClassicalRegister*](/docs/api/qiskit/1.4/circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister")  *|*[*int*](https://docs.python.org/3/library/functions.html#int)) – the classical resource the equality condition should be on. If this is given as an integer, it will be resolved into a [`Clbit`](/docs/api/qiskit/1.4/circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") using the same conventions as the circuit these instructions are attached to.
- **val** ([*int*](https://docs.python.org/3/library/functions.html#int)) – the value the classical resource should be equal to.

**Returns**

This same instance of [`InstructionSet`](#qiskit.circuit.InstructionSet "qiskit.circuit.InstructionSet"), but now mutated to have the given equality condition.

**Raises**

[**CircuitError**](/docs/api/qiskit/1.4/circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – if the passed classical resource is invalid, or otherwise not resolvable to a concrete resource that these instructions are permitted to access.

**Return type**

[InstructionSet](#qiskit.circuit.InstructionSet "qiskit.circuit.InstructionSet")

### inverse

`inverse(annotated=False)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.4/qiskit/circuit/instructionset.py#L90-L107)

Invert all instructions.

> **Note**
>
> It is preferable to take the inverse *before* appending the gate(s) to the circuit.

**Parameters**

**annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) –
