Skip to content

Lattice

AddressQubit dataclass

AddressQubit(data: int)

Bases: QubitLike

A lattice element representing a single qubit with a known address.

AddressReg dataclass

AddressReg(data: Sequence[int])

Bases: RegisterLike

A lattice element representing a container of qubits with known indices.

Bottom dataclass

Bottom()

Bases: Address

Error during interpretation

ConstResult dataclass

ConstResult(result: Result)

Bases: Address

Stores a constant prop result in the lattice

PartialIList dataclass

PartialIList(data: tuple[Address, ...])

Bases: StaticContainer

A lattice element representing a partially known ilist.

PartialIListMeta

Bases: LatticeAttributeMeta

This metaclass assures that PartialILists of ConstResults or AddressQubits are canonicalized to a single ConstResult or AddressReg respectively.

because AddressReg is a specialization of PartialIList, being a container of pure qubit addresses. For Operations that act in generic containers (e.g., ilist.ForEach), AddressReg is treated as PartialIList but for other types of analysis it is often useful to distinguish between a generic IList and a pure qubit address list.

Inside the method tables the GetValuesMixin implements a method that effectively undoes this canonicalization.

PartialLambda dataclass

PartialLambda(
    argnames: list[str],
    code: Statement,
    captured: tuple[Address, ...],
)

Bases: Address

Represents a partially known lambda function

PartialTuple dataclass

PartialTuple(data: tuple[Address, ...])

Bases: StaticContainer

A lattice element representing a partially known tuple.

PartialTupleMeta

Bases: LatticeAttributeMeta

This metaclass assures that PartialTuples of ConstResults are canonicalized to a single ConstResult.

StaticContainer dataclass

StaticContainer(data: tuple[Address, ...])

Bases: Address

A lattice element representing the results of any static container, e. g. ilist or tuple.

Unknown dataclass

Unknown()

Bases: Address

Can't determine if it is an address or constant.

UnknownQubit dataclass

UnknownQubit()

Bases: QubitLike

A lattice element representing a single qubit with an unknown address.

UnknownReg dataclass

UnknownReg()

Bases: RegisterLike

A lattice element representing a container of qubits with unknown indices.