Skip to content

bloqade.lanes.analysis.placement.lattice.Permuted

← Module overview

classPermutedsource

bloqade.lanes.analysis.placement.lattice.Permuted

Bases: ConcreteState

State produced by a ``place.Permute`` with ``insert_moves=True`` — an active qubit permutation that commits the physical moves.

Signature
class Permuted(occupied: frozenset[LocationAddress], layout: tuple[LocationAddress, ...], move_count: tuple[int, ...], *, move_layers: tuple[tuple[LaneAddress, ...], ...] = ())

The physical permutation is committed: move_layers are emitted at the permute site (get_move_layers) but are not palindrome-returned. The permutation cycles atoms among the same set of slots, so each qubit id is pinned back to its pre-permute slot — layout is therefore unchanged, and the permutation surfaces as a relabel: the atom now sitting at qid i’s slot is a different one, so downstream ops on qid i act on the permuted quantum information.

Deliberately not a UserMoved: it is committed, so it must not be the type PalindromePlacementStrategy acts on (palindrome-return at the next CZ, reject at a measure). As a plain committed ConcreteState subclass it flows through subsequent SQ / CZ / measure normally, and _strip_user_moved collapses it to a bare ConcreteState once its forward moves have been emitted at the permute site. (insert_moves=True is only produced under a non-palindrome strategy; the default relabel-only permute is a bare ConcreteState with the permuted layout and no move layers.)

Parameters

NameTypeDefaultDescription
occupiedfrozenset[LocationAddress]required
layouttuple[LocationAddress, ...]required
move_counttuple[int, ...]required
move_layerstuple[tuple[LaneAddress, ...], ...]()

Attributes

NameTypeDefaultDescription
move_layerstuple[tuple[LaneAddress, ...], ...]field(kw_only=True, default=())Forward AOD layers realizing the physical permutation; emitted once at the permute site and not returned.

methodget_move_layerssource

bloqade.lanes.analysis.placement.lattice.Permuted.get_move_layers

def get_move_layers() -> tuple[tuple[LaneAddress, ...], ...]

Returns

tuple[tuple[LaneAddress, ...], ...]

source

methodis_subseteqsource

bloqade.lanes.analysis.placement.lattice.Permuted.is_subseteq

def is_subseteq(other: AtomState) -> bool

Parameters

NameTypeDescription
otherAtomState

Returns

bool

source