Lattice
AddressQubit
dataclass
AddressQubit(data: int)
Bases: QubitLike
flowchart TD
bloqade.analysis.address.lattice.AddressQubit[AddressQubit]
bloqade.analysis.address.lattice.QubitLike[QubitLike]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.QubitLike --> bloqade.analysis.address.lattice.AddressQubit
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.QubitLike
click bloqade.analysis.address.lattice.AddressQubit href "" "bloqade.analysis.address.lattice.AddressQubit"
click bloqade.analysis.address.lattice.QubitLike href "" "bloqade.analysis.address.lattice.QubitLike"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a single qubit with a known address.
AddressReg
dataclass
AddressReg(data: Sequence[int])
Bases: RegisterLike
flowchart TD
bloqade.analysis.address.lattice.AddressReg[AddressReg]
bloqade.analysis.address.lattice.RegisterLike[RegisterLike]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.RegisterLike --> bloqade.analysis.address.lattice.AddressReg
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.RegisterLike
click bloqade.analysis.address.lattice.AddressReg href "" "bloqade.analysis.address.lattice.AddressReg"
click bloqade.analysis.address.lattice.RegisterLike href "" "bloqade.analysis.address.lattice.RegisterLike"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a container of qubits with known indices.
Bottom
dataclass
Bottom()
Bases: Address
flowchart TD
bloqade.analysis.address.lattice.Bottom[Bottom]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.Bottom
click bloqade.analysis.address.lattice.Bottom href "" "bloqade.analysis.address.lattice.Bottom"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
Error during interpretation
ConstResult
dataclass
ConstResult(result: Result)
Bases: Address
flowchart TD
bloqade.analysis.address.lattice.ConstResult[ConstResult]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.ConstResult
click bloqade.analysis.address.lattice.ConstResult href "" "bloqade.analysis.address.lattice.ConstResult"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
Stores a constant prop result in the lattice
PartialIList
dataclass
PartialIList(data: tuple[Address, ...])
Bases: StaticContainer
flowchart TD
bloqade.analysis.address.lattice.PartialIList[PartialIList]
bloqade.analysis.address.lattice.StaticContainer[StaticContainer]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.StaticContainer --> bloqade.analysis.address.lattice.PartialIList
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.StaticContainer
click bloqade.analysis.address.lattice.PartialIList href "" "bloqade.analysis.address.lattice.PartialIList"
click bloqade.analysis.address.lattice.StaticContainer href "" "bloqade.analysis.address.lattice.StaticContainer"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a partially known ilist.
PartialIListMeta
Bases: LatticeAttributeMeta
flowchart TD
bloqade.analysis.address.lattice.PartialIListMeta[PartialIListMeta]
click bloqade.analysis.address.lattice.PartialIListMeta href "" "bloqade.analysis.address.lattice.PartialIListMeta"
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
flowchart TD
bloqade.analysis.address.lattice.PartialLambda[PartialLambda]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.PartialLambda
click bloqade.analysis.address.lattice.PartialLambda href "" "bloqade.analysis.address.lattice.PartialLambda"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
Represents a partially known lambda function
PartialTuple
dataclass
PartialTuple(data: tuple[Address, ...])
Bases: StaticContainer
flowchart TD
bloqade.analysis.address.lattice.PartialTuple[PartialTuple]
bloqade.analysis.address.lattice.StaticContainer[StaticContainer]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.StaticContainer --> bloqade.analysis.address.lattice.PartialTuple
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.StaticContainer
click bloqade.analysis.address.lattice.PartialTuple href "" "bloqade.analysis.address.lattice.PartialTuple"
click bloqade.analysis.address.lattice.StaticContainer href "" "bloqade.analysis.address.lattice.StaticContainer"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a partially known tuple.
PartialTupleMeta
Bases: LatticeAttributeMeta
flowchart TD
bloqade.analysis.address.lattice.PartialTupleMeta[PartialTupleMeta]
click bloqade.analysis.address.lattice.PartialTupleMeta href "" "bloqade.analysis.address.lattice.PartialTupleMeta"
This metaclass assures that PartialTuples of ConstResults are canonicalized to a single ConstResult.
StaticContainer
dataclass
StaticContainer(data: tuple[Address, ...])
Bases: Address
flowchart TD
bloqade.analysis.address.lattice.StaticContainer[StaticContainer]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.StaticContainer
click bloqade.analysis.address.lattice.StaticContainer href "" "bloqade.analysis.address.lattice.StaticContainer"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing the results of any static container, e. g. ilist or tuple.
Unknown
dataclass
Unknown()
Bases: Address
flowchart TD
bloqade.analysis.address.lattice.Unknown[Unknown]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.Unknown
click bloqade.analysis.address.lattice.Unknown href "" "bloqade.analysis.address.lattice.Unknown"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
Can't determine if it is an address or constant.
UnknownQubit
dataclass
UnknownQubit()
Bases: QubitLike
flowchart TD
bloqade.analysis.address.lattice.UnknownQubit[UnknownQubit]
bloqade.analysis.address.lattice.QubitLike[QubitLike]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.QubitLike --> bloqade.analysis.address.lattice.UnknownQubit
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.QubitLike
click bloqade.analysis.address.lattice.UnknownQubit href "" "bloqade.analysis.address.lattice.UnknownQubit"
click bloqade.analysis.address.lattice.QubitLike href "" "bloqade.analysis.address.lattice.QubitLike"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a single qubit with an unknown address.
UnknownReg
dataclass
UnknownReg()
Bases: RegisterLike
flowchart TD
bloqade.analysis.address.lattice.UnknownReg[UnknownReg]
bloqade.analysis.address.lattice.RegisterLike[RegisterLike]
bloqade.analysis.address.lattice.Address[Address]
bloqade.analysis.address.lattice.RegisterLike --> bloqade.analysis.address.lattice.UnknownReg
bloqade.analysis.address.lattice.Address --> bloqade.analysis.address.lattice.RegisterLike
click bloqade.analysis.address.lattice.UnknownReg href "" "bloqade.analysis.address.lattice.UnknownReg"
click bloqade.analysis.address.lattice.RegisterLike href "" "bloqade.analysis.address.lattice.RegisterLike"
click bloqade.analysis.address.lattice.Address href "" "bloqade.analysis.address.lattice.Address"
A lattice element representing a container of qubits with unknown indices.