Skip to content

Nonclassical intermediate latents with exclusively classical sources are wrongly treated like classical intermediate latents #156

@eliewolfe

Description

@eliewolfe

The problem

I came to think about this bug when I was thinking about the "broadcasting scenario" which @ecboghiu has thought about as per Device-independent and semi-device-independent entanglement certification in broadcast Bell scenarios
.

The idea there is that Bob1 and Bob2 act like NS parties (they cannot be unpacked, their individual operators do not commute across change of setting), when they are only locally connected to Alice.
This is a totally-standard intermediate latent scenario.
I think there are TWO structurally-distinct but operationally-equivalent ways to formulate the broadcasting scenario. The way the paper does it --- and the way which leads to the bug --- is having one classical source and throwing in an intermediate latent with the two Bobs as its. (The bug-free version is to have the source be nonclassical, and to throw in a classical intermediate latent in front of Alice.)

However, when we wrote the code to handle intermediate latents, we really only were concerned with the case of multiple nonclassical sources coming together at an intermediate latent, with multiple parties being children of the intermediate latent. This can induce a situation whereby two parties with partially overlapping copy indices can fail to commute.

Unfortunately, it seems that we neglected to consider nonclassical intermediate latents with classical-type source parents, such as is the case in a broadcasting scenario. We know that Bob's operators for Y=0 should not commute with those for Y=1, in a broadcasting scenario.
However, if you look into our code, you see that Bob lacks any quantum-latent-mediated connection to a quantum source. So, the sources_to_check_for_pairwise argument which powers nb_operators_commute has no way of informing the commutation-determining function that Bob has a nonclassical parent, wrongly leading to all Bob-type operators commuting in our current implementation.

How to fix it

The easiest thing to do for today would be to add an assertion check. If the DAG has a nonclassical intermediate latent without nonclassical parent sources, return and assertion error. The user should be instructed to manually resubmit their DAG with an additional nonclassical source, with the intermediate latent being the only child of the "dummy" nonclassical source.
For that matter, if the inflation level of (all) the parent(s) of the intermediate latent is 1, we can skip the assertion and just silently adjust the DAG internally early on in __init__ of InflationProblem.

Keep in mind that a nonclassical intermediate latent is enough to mean that different copy-indices of sources behind that intermediate latent leads to noncommutation across distinct children of the intermediate latent. Note that even if ALL the copy indices are different (as opposed to partial overlap), we still have noncommutation in the Heisenberg picture, which we are employing.
The hack of adding a dummy quantum source behind the intermediate latent handles this beautifully.

Metadata

Metadata

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions