// λλ with PhotonSharp optical operations. Connections follow signal expressions. let A = source(1, 0) in let vac_A = source(0, 0) in let B = source(1, -1.5707963267948966) in let vac_B = source(0, 0) in let Cin = source(1, -1.5707963267948966) in let vac_Cin = source(0, 0) in let vac_mzi = source(0, 0) in unpack coupler(0.5, (A, vac_A)) as (split_A_a, split_A_b) in unpack coupler(0.5, (B, vac_B)) as (split_B_a, split_B_b) in unpack coupler(0.5, (Cin, vac_Cin)) as (split_Cin_a, split_Cin_b) in unpack coupler(0.5, (split_A_a, split_B_a)) as (lu_mix_a, lu_mix_b) in unpack coupler(0.5, (split_A_b, split_B_b)) as (fa_ab_mix_a, fa_ab_mix_b) in detect(0.8, split_Cin_a); let OR = probe(0.125, lu_mix_a) in let XOR = probe(0.125, lu_mix_b) in detect(0.8, fa_ab_mix_b); unpack coupler(0.3333333333333333, (fa_ab_mix_a, split_Cin_b)) as (fa_abc_mix_a, fa_abc_mix_b) in let AND = probe(0.625, OR) in detect(0.8, XOR); detect(0.8, fa_abc_mix_b); let COUT = probe(0.4166666666666667, fa_abc_mix_a) in detect(0.8, AND); unpack coupler(0.5, (COUT, vac_mzi)) as (fa_mzi_split_a, fa_mzi_split_b) in let parity_kerr = kerr(37.69911184307752, fa_mzi_split_a) in unpack coupler(0.5, (parity_kerr, fa_mzi_split_b)) as (fa_mzi_recombine_a, fa_mzi_recombine_b) in let SUM = probe(0.08333333333333333, fa_mzi_recombine_a) in detect(0.8, fa_mzi_recombine_b); detect(0.8, SUM); ()