diff --git a/examples/cryptanalysis/3_round_feistel.qpl b/examples/cryptanalysis/3_round_feistel.qpl index 7ac1943..fc7c3ce 100644 --- a/examples/cryptanalysis/3_round_feistel.qpl +++ b/examples/cryptanalysis/3_round_feistel.qpl @@ -72,14 +72,14 @@ proc f(b : Fin<2>, x : BitVec<20>, zero : Fin<2>, res : BitVec<20>) { locals : ( } uproc SimonOneRound_U(x_1 : OUT Fin<2>, x_2 : OUT BitVec<20>, y : AUX Fin<2>, y_1 : AUX BitVec<20>, yy : AUX Fin<2>, yy_1 : AUX BitVec<20>, aux_20 : AUX BitVec<20>, aux_21 : AUX BitVec<20>, aux_22 : AUX BitVec<20>, aux_23 : AUX BitVec<20>, aux_24 : AUX BitVec<20>, aux_25 : AUX BitVec<20>, aux_26 : AUX BitVec<20>, aux_27 : AUX BitVec<20>, aux_28 : AUX BitVec<20>, aux_29 : AUX BitVec<20>, aux_30 : AUX BitVec<20>, aux_31 : AUX BitVec<20>, aux_32 : AUX BitVec<20>, aux_33 : AUX BitVec<20>, aux_34 : AUX BitVec<20>, aux_35 : AUX BitVec<20>, aux_36 : AUX BitVec<20>, aux_37 : AUX BitVec<20>, aux_38 : AUX BitVec<20>, aux_39 : AUX BitVec<20>, aux_40 : AUX BitVec<20>, aux_41 : AUX BitVec<20>, aux_42 : AUX BitVec<20>, aux_43 : AUX BitVec<20>, aux_44 : AUX BitVec<20>, aux_45 : AUX BitVec<20>, aux_46 : AUX BitVec<20>, aux_47 : AUX Fin<2>) { - x_1 *= Distr[uniform : Fin<2>]; - x_2 *= Distr[uniform : BitVec<20>]; + x_1 *= Unif; + x_2 *= Unif; call f_U(x_1, x_2, y, y_1, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46, aux_47); y, yy *= COPY; y_1, yy_1 *= COPY; call-adj f_U(x_1, x_2, y, y_1, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46, aux_47); - x_2 *= Adj-Distr[uniform : BitVec<20>]; - x_1 *= Adj-Distr[uniform : Fin<2>]; + x_2 *= Unif; + x_1 *= Unif; } uproc USimon(ret : OUT Fin<2>, ret_1 : OUT BitVec<20>, USimon_aux : AUX Arr<32, Fin<2>>, USimon_aux_1 : AUX Arr<32, BitVec<20>>, USimon_aux_2 : AUX Arr<32, Fin<2>>, USimon_aux_3 : AUX Arr<32, BitVec<20>>, USimon_aux_4 : AUX Arr<32, Fin<2>>, USimon_aux_5 : AUX Arr<32, BitVec<20>>, USimon_aux_6 : AUX Arr<32, BitVec<20>>, USimon_aux_7 : AUX Arr<32, BitVec<20>>, USimon_aux_8 : AUX Arr<32, BitVec<20>>, USimon_aux_9 : AUX Arr<32, BitVec<20>>, USimon_aux_10 : AUX Arr<32, BitVec<20>>, USimon_aux_11 : AUX Arr<32, BitVec<20>>, USimon_aux_12 : AUX Arr<32, BitVec<20>>, USimon_aux_13 : AUX Arr<32, BitVec<20>>, USimon_aux_14 : AUX Arr<32, BitVec<20>>, USimon_aux_15 : AUX Arr<32, BitVec<20>>, USimon_aux_16 : AUX Arr<32, BitVec<20>>, USimon_aux_17 : AUX Arr<32, BitVec<20>>, USimon_aux_18 : AUX Arr<32, BitVec<20>>, USimon_aux_19 : AUX Arr<32, BitVec<20>>, USimon_aux_20 : AUX Arr<32, BitVec<20>>, USimon_aux_21 : AUX Arr<32, BitVec<20>>, USimon_aux_22 : AUX Arr<32, BitVec<20>>, USimon_aux_23 : AUX Arr<32, BitVec<20>>, USimon_aux_24 : AUX Arr<32, BitVec<20>>, USimon_aux_25 : AUX Arr<32, BitVec<20>>, USimon_aux_26 : AUX Arr<32, BitVec<20>>, USimon_aux_27 : AUX Arr<32, BitVec<20>>, USimon_aux_28 : AUX Arr<32, BitVec<20>>, USimon_aux_29 : AUX Arr<32, BitVec<20>>, USimon_aux_30 : AUX Arr<32, BitVec<20>>, USimon_aux_31 : AUX Arr<32, BitVec<20>>, USimon_aux_32 : AUX Arr<32, BitVec<20>>, USimon_aux_33 : AUX Arr<32, Fin<2>>) { @@ -96,14 +96,14 @@ uproc AttackThreeRoundFeistel_U(s : OUT BitVec<20>, zero : AUX Fin<2>, zero_2 : } uproc SimonOneRound_U_1(x_3 : OUT Fin<2>, x_4 : OUT BitVec<20>, y_2 : AUX Fin<2>, y_3 : AUX BitVec<20>, yy_2 : AUX Fin<2>, yy_3 : AUX BitVec<20>, aux_48 : AUX BitVec<20>, aux_49 : AUX BitVec<20>, aux_50 : AUX BitVec<20>, aux_51 : AUX BitVec<20>, aux_52 : AUX BitVec<20>, aux_53 : AUX BitVec<20>, aux_54 : AUX BitVec<20>, aux_55 : AUX BitVec<20>, aux_56 : AUX BitVec<20>, aux_57 : AUX BitVec<20>, aux_58 : AUX BitVec<20>, aux_59 : AUX BitVec<20>, aux_60 : AUX BitVec<20>, aux_61 : AUX BitVec<20>, aux_62 : AUX BitVec<20>, aux_63 : AUX BitVec<20>, aux_64 : AUX BitVec<20>, aux_65 : AUX BitVec<20>, aux_66 : AUX BitVec<20>, aux_67 : AUX BitVec<20>, aux_68 : AUX BitVec<20>, aux_69 : AUX BitVec<20>, aux_70 : AUX BitVec<20>, aux_71 : AUX BitVec<20>, aux_72 : AUX BitVec<20>, aux_73 : AUX BitVec<20>, aux_74 : AUX BitVec<20>, aux_75 : AUX Fin<2>) { - x_3 *= Distr[uniform : Fin<2>]; - x_4 *= Distr[uniform : BitVec<20>]; + x_3 *= Unif; + x_4 *= Unif; call f_U(x_3, x_4, y_2, y_3, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75); y_2, yy_2 *= COPY; y_3, yy_3 *= COPY; call-adj f_U(x_3, x_4, y_2, y_3, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75); - x_4 *= Adj-Distr[uniform : BitVec<20>]; - x_3 *= Adj-Distr[uniform : Fin<2>]; + x_4 *= Unif; + x_3 *= Unif; } proc QSimon(ret_2 : Fin<2>, ret_3 : BitVec<20>) { locals : (QSimon__u : Arr<32, Fin<2>>, QSimon__u_1 : Arr<32, BitVec<20>>) } { diff --git a/examples/cryptanalysis/even_mansour.qpl b/examples/cryptanalysis/even_mansour.qpl index c097180..e206167 100644 --- a/examples/cryptanalysis/even_mansour.qpl +++ b/examples/cryptanalysis/even_mansour.qpl @@ -22,11 +22,11 @@ proc f(x : BitVec<20>, fx : BitVec<20>) { locals : (ex : BitVec<20>, px : BitVec } uproc SimonOneRound_U(x_1 : OUT BitVec<20>, y : AUX BitVec<20>, yy : AUX BitVec<20>, aux : AUX BitVec<20>, aux_1 : AUX BitVec<20>, aux_2 : AUX BitVec<20>, aux_3 : AUX BitVec<20>, aux_4 : AUX BitVec<20>) { - x_1 *= Distr[uniform : BitVec<20>]; + x_1 *= Unif; call f_U(x_1, y, aux, aux_1, aux_2, aux_3, aux_4); y, yy *= COPY; call-adj f_U(x_1, y, aux, aux_1, aux_2, aux_3, aux_4); - x_1 *= Adj-Distr[uniform : BitVec<20>]; + x_1 *= Unif; } uproc USimon(ret : OUT BitVec<20>, USimon_aux : AUX Arr<31, BitVec<20>>, USimon_aux_1 : AUX Arr<31, BitVec<20>>, USimon_aux_2 : AUX Arr<31, BitVec<20>>, USimon_aux_3 : AUX Arr<31, BitVec<20>>, USimon_aux_4 : AUX Arr<31, BitVec<20>>, USimon_aux_5 : AUX Arr<31, BitVec<20>>, USimon_aux_6 : AUX Arr<31, BitVec<20>>, USimon_aux_7 : AUX Arr<31, BitVec<20>>) { @@ -51,11 +51,11 @@ uproc BreakEM_U(k1 : OUT BitVec<20>, k2 : OUT BitVec<20>, ze : AUX BitVec<20>, e } uproc SimonOneRound_U_1(x_2 : OUT BitVec<20>, y_1 : AUX BitVec<20>, yy_1 : AUX BitVec<20>, aux_5 : AUX BitVec<20>, aux_6 : AUX BitVec<20>, aux_7 : AUX BitVec<20>, aux_8 : AUX BitVec<20>, aux_9 : AUX BitVec<20>) { - x_2 *= Distr[uniform : BitVec<20>]; + x_2 *= Unif; call f_U(x_2, y_1, aux_5, aux_6, aux_7, aux_8, aux_9); y_1, yy_1 *= COPY; call-adj f_U(x_2, y_1, aux_5, aux_6, aux_7, aux_8, aux_9); - x_2 *= Adj-Distr[uniform : BitVec<20>]; + x_2 *= Unif; } proc QSimon(ret_1 : BitVec<20>) { locals : (QSimon__u : Arr<31, BitVec<20>>) } { diff --git a/examples/cryptanalysis/grover_meets_simon.qpl b/examples/cryptanalysis/grover_meets_simon.qpl index 39c18fb..9fc1510 100644 --- a/examples/cryptanalysis/grover_meets_simon.qpl +++ b/examples/cryptanalysis/grover_meets_simon.qpl @@ -26,11 +26,11 @@ ext uproc classifier_U(BitVec<20>, BitVec<20>, Fin<2>); ext proc classifier(BitVec<20>, BitVec<20>, Fin<2>); uproc SimonOneRound_U(k : BitVec<20>, x_1 : OUT BitVec<20>, y : AUX BitVec<20>, yy : AUX BitVec<20>, aux : AUX BitVec<20>, aux_1 : AUX BitVec<20>, aux_2 : AUX BitVec<20>, aux_3 : AUX BitVec<20>, aux_4 : AUX BitVec<20>) { - x_1 *= Distr[uniform : BitVec<20>]; + x_1 *= Unif; call f_U(k, x_1, y, aux, aux_1, aux_2, aux_3, aux_4); y, yy *= COPY; call-adj f_U(k, x_1, y, aux, aux_1, aux_2, aux_3, aux_4); - x_1 *= Adj-Distr[uniform : BitVec<20>]; + x_1 *= Unif; } uproc USimon(k : BitVec<20>, ret : OUT BitVec<20>, USimon_aux : AUX Arr<79, BitVec<20>>, USimon_aux_1 : AUX Arr<79, BitVec<20>>, USimon_aux_2 : AUX Arr<79, BitVec<20>>, USimon_aux_3 : AUX Arr<79, BitVec<20>>, USimon_aux_4 : AUX Arr<79, BitVec<20>>, USimon_aux_5 : AUX Arr<79, BitVec<20>>, USimon_aux_6 : AUX Arr<79, BitVec<20>>, USimon_aux_7 : AUX Arr<79, BitVec<20>>) { @@ -49,11 +49,11 @@ uproc innerAttack_U(k : IN BitVec<20>, res : OUT Fin<2>, k1 : AUX BitVec<20>, k1 } uproc SimonOneRound_U_1(k : BitVec<20>, x_2 : OUT BitVec<20>, y_1 : AUX BitVec<20>, yy_1 : AUX BitVec<20>, aux_5 : AUX BitVec<20>, aux_6 : AUX BitVec<20>, aux_7 : AUX BitVec<20>, aux_8 : AUX BitVec<20>, aux_9 : AUX BitVec<20>) { - x_2 *= Distr[uniform : BitVec<20>]; + x_2 *= Unif; call f_U(k, x_2, y_1, aux_5, aux_6, aux_7, aux_8, aux_9); y_1, yy_1 *= COPY; call-adj f_U(k, x_2, y_1, aux_5, aux_6, aux_7, aux_8, aux_9); - x_2 *= Adj-Distr[uniform : BitVec<20>]; + x_2 *= Unif; } proc QSimon(k : BitVec<20>, ret_1 : BitVec<20>) { locals : (QSimon__u : Arr<79, BitVec<20>>) } { @@ -71,23 +71,23 @@ proc innerAttack(k : BitVec<20>, res : Fin<2>) { locals : (k1 : BitVec<20>, x_2 uproc USearch(ret_2 : OUT Fin<2>, ret_3 : OUT BitVec<20>, aux_10 : AUX BitVec<20>, aux_11 : AUX BitVec<20>, aux_12 : AUX BitVec<20>, aux_13 : AUX BitVec<20>, aux_14 : AUX BitVec<20>, aux_15 : AUX BitVec<20>, aux_16 : AUX BitVec<20>, aux_17 : AUX BitVec<20>, aux_18 : AUX BitVec<20>, aux_19 : AUX BitVec<20>, aux_20 : AUX Arr<79, BitVec<20>>, aux_21 : AUX Arr<79, BitVec<20>>, aux_22 : AUX Arr<79, BitVec<20>>, aux_23 : AUX Arr<79, BitVec<20>>, aux_24 : AUX Arr<79, BitVec<20>>, aux_25 : AUX Arr<79, BitVec<20>>, aux_26 : AUX Arr<79, BitVec<20>>, aux_27 : AUX Arr<79, BitVec<20>>, aux_28 : AUX Arr<79, BitVec<20>>, aux_29 : AUX Arr<79, BitVec<20>>, aux_30 : AUX Arr<79, BitVec<20>>, aux_31 : AUX Arr<79, BitVec<20>>, aux_32 : AUX Arr<79, BitVec<20>>, aux_33 : AUX Arr<79, BitVec<20>>, aux_34 : AUX Arr<79, BitVec<20>>, aux_35 : AUX Arr<79, BitVec<20>>, aux_36 : AUX Fin<2>, aux_37 : AUX Fin<2>, ctrl : AUX Arr<16, Fin<2>>, pred_out : AUX Arr<16, Fin<2>>, n_iter : AUX Arr<16, Fin<805>>, s_arg : AUX Arr<16, BitVec<20>>) { for (#run_ix in 0 .. < 16) { - n_iter[#run_ix] *= Distr[uniform : Fin<805>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : BitVec<20>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 805) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call innerAttack_U(s_arg[#run_ix], aux_37, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36); ctrl[#run_ix], aux_37, pred_out[#run_ix] *= Toffoli; call-adj innerAttack_U(s_arg[#run_ix], aux_37, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36); - s_arg[#run_ix] *= Adj-Distr[uniform : BitVec<20>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : BitVec<20>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<805>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call innerAttack_U(s_arg[#run_ix], aux_37, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36); ctrl[#run_ix], aux_37, pred_out[#run_ix] *= Toffoli; @@ -106,12 +106,12 @@ uproc outerAttack_U(k0 : OUT BitVec<20>, ok : AUX Fin<2>, ok_1 : AUX Fin<2>, k0_ uproc Grover[k](x_3 : IN BitVec<20>, ret_4 : OUT Fin<2>, aux_38 : AUX BitVec<20>, aux_39 : AUX BitVec<20>, aux_40 : AUX BitVec<20>, aux_41 : AUX BitVec<20>, aux_42 : AUX BitVec<20>, aux_43 : AUX BitVec<20>, aux_44 : AUX BitVec<20>, aux_45 : AUX BitVec<20>, aux_46 : AUX BitVec<20>, aux_47 : AUX BitVec<20>, aux_48 : AUX Arr<79, BitVec<20>>, aux_49 : AUX Arr<79, BitVec<20>>, aux_50 : AUX Arr<79, BitVec<20>>, aux_51 : AUX Arr<79, BitVec<20>>, aux_52 : AUX Arr<79, BitVec<20>>, aux_53 : AUX Arr<79, BitVec<20>>, aux_54 : AUX Arr<79, BitVec<20>>, aux_55 : AUX Arr<79, BitVec<20>>, aux_56 : AUX Arr<79, BitVec<20>>, aux_57 : AUX Arr<79, BitVec<20>>, aux_58 : AUX Arr<79, BitVec<20>>, aux_59 : AUX Arr<79, BitVec<20>>, aux_60 : AUX Arr<79, BitVec<20>>, aux_61 : AUX Arr<79, BitVec<20>>, aux_62 : AUX Arr<79, BitVec<20>>, aux_63 : AUX Arr<79, BitVec<20>>, aux_64 : AUX Fin<2>) { ret_4 *= X; ret_4 *= H; - x_3 *= Distr[uniform : BitVec<20>]; + x_3 *= Unif; repeat (#k) { call innerAttack_U(x_3, ret_4, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46, aux_47, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64); - x_3 *= Adj-Distr[uniform : BitVec<20>]; + x_3 *= Adj-Unif; x_3 *= PhaseOnZero(3.141592653589793); - x_3 *= Distr[uniform : BitVec<20>]; + x_3 *= Unif; } ret_4 *= H; ret_4 *= X; diff --git a/examples/cryptanalysis/period_finding.qpl b/examples/cryptanalysis/period_finding.qpl index c778f9d..f3c9c8b 100644 --- a/examples/cryptanalysis/period_finding.qpl +++ b/examples/cryptanalysis/period_finding.qpl @@ -3,11 +3,11 @@ ext uproc f_U(BitVec<20>, BitVec<20>); ext proc f(BitVec<20>, BitVec<20>); uproc SimonOneRound_U(x : OUT BitVec<20>, y : AUX BitVec<20>, yy : AUX BitVec<20>) { - x *= Distr[uniform : BitVec<20>]; + x *= Unif; call f_U(x, y); y, yy *= COPY; call-adj f_U(x, y); - x *= Adj-Distr[uniform : BitVec<20>]; + x *= Unif; } uproc USimon(ret : OUT BitVec<20>, USimon_aux : AUX Arr<31, BitVec<20>>, USimon_aux_1 : AUX Arr<31, BitVec<20>>, USimon_aux_2 : AUX Arr<31, BitVec<20>>) { @@ -24,11 +24,11 @@ uproc main_U(s : OUT BitVec<20>, s_1 : AUX BitVec<20>, x : AUX BitVec<20>, y : A } uproc SimonOneRound_U_1(x_1 : OUT BitVec<20>, y_1 : AUX BitVec<20>, yy_1 : AUX BitVec<20>) { - x_1 *= Distr[uniform : BitVec<20>]; + x_1 *= Unif; call f_U(x_1, y_1); y_1, yy_1 *= COPY; call-adj f_U(x_1, y_1); - x_1 *= Adj-Distr[uniform : BitVec<20>]; + x_1 *= Unif; } proc QSimon(ret_1 : BitVec<20>) { locals : (QSimon__u : Arr<31, BitVec<20>>) } { diff --git a/examples/hillclimb/max_sat_hillclimb.qpl b/examples/hillclimb/max_sat_hillclimb.qpl index 74e8e2a..2b77719 100644 --- a/examples/hillclimb/max_sat_hillclimb.qpl +++ b/examples/hillclimb/max_sat_hillclimb.qpl @@ -28,23 +28,23 @@ proc good(x : Arr<20, Fin<2>>, i : Fin<20>, ok : Fin<2>) { locals : (w : Fin<100 uproc USearch(x : Arr<20, Fin<2>>, ret : OUT Fin<2>, ret_1 : OUT Fin<20>, aux : AUX Fin<1000>, aux_1 : AUX Fin<2>, aux_2 : AUX Fin<2>, aux_3 : AUX Arr<20, Fin<2>>, aux_4 : AUX Fin<1000>, aux_5 : AUX Fin<1000>, aux_6 : AUX Fin<2>, aux_7 : AUX Fin<2>, aux_8 : AUX Arr<20, Fin<2>>, aux_9 : AUX Fin<1000>, aux_10 : AUX Fin<2>, aux_11 : AUX Fin<2>, ctrl : AUX Arr<17, Fin<2>>, pred_out : AUX Arr<17, Fin<2>>, n_iter : AUX Arr<17, Fin<4>>, s_arg : AUX Arr<17, Fin<20>>) { for (#run_ix in 0 .. < 17) { - n_iter[#run_ix] *= Distr[uniform : Fin<4>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 4) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call good_U(x, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); ctrl[#run_ix], aux_11, pred_out[#run_ix] *= Toffoli; call-adj good_U(x, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); - s_arg[#run_ix] *= Adj-Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<4>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call good_U(x, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); ctrl[#run_ix], aux_11, pred_out[#run_ix] *= Toffoli; @@ -69,12 +69,12 @@ uproc hillclimb_iter_U(x : IN Arr<20, Fin<2>>, x' : OUT Arr<20, Fin<2>>, ok : AU uproc Grover[k](x : Arr<20, Fin<2>>, x_4 : IN Fin<20>, ret_2 : OUT Fin<2>, aux_12 : AUX Fin<1000>, aux_13 : AUX Fin<2>, aux_14 : AUX Fin<2>, aux_15 : AUX Arr<20, Fin<2>>, aux_16 : AUX Fin<1000>, aux_17 : AUX Fin<1000>, aux_18 : AUX Fin<2>, aux_19 : AUX Fin<2>, aux_20 : AUX Arr<20, Fin<2>>, aux_21 : AUX Fin<1000>, aux_22 : AUX Fin<2>) { ret_2 *= X; ret_2 *= H; - x_4 *= Distr[uniform : Fin<20>]; + x_4 *= Unif; repeat (#k) { call good_U(x, x_4, ret_2, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22); - x_4 *= Adj-Distr[uniform : Fin<20>]; + x_4 *= Adj-Unif; x_4 *= PhaseOnZero(3.141592653589793); - x_4 *= Distr[uniform : Fin<20>]; + x_4 *= Unif; } ret_2 *= H; ret_2 *= X; diff --git a/examples/hillclimb/steep_max_sat.qpl b/examples/hillclimb/steep_max_sat.qpl index 1ae4262..74d095b 100644 --- a/examples/hillclimb/steep_max_sat.qpl +++ b/examples/hillclimb/steep_max_sat.qpl @@ -50,12 +50,12 @@ uproc Compare(x : Arr<20, Fin<2>>, y : Fin<1000>, x_5 : Fin<20>, b_3 : Fin<2>, o uproc Grover[k](x : Arr<20, Fin<2>>, y_1 : Fin<1000>, x_6 : Fin<20>, b_4 : Fin<2>, aux_18 : AUX Fin<1000>, aux_19 : AUX Fin<1000>, aux_20 : AUX Fin<2>, aux_21 : AUX Fin<2>, aux_22 : AUX Arr<20, Fin<2>>, aux_23 : AUX Fin<1000>, aux_24 : AUX Fin<2>, aux_25 : AUX Fin<2>, aux_26 : AUX Arr<20, Fin<2>>, aux_27 : AUX Fin<1000>) { b_4 *= X; b_4 *= H; - x_6 *= Distr[uniform : Fin<20>]; + x_6 *= Unif; repeat (#k) { call Compare(x, y_1, x_6, b_4, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27); - x_6 *= Adj-Distr[uniform : Fin<20>]; + x_6 *= Adj-Unif; x_6 *= PhaseOnZero(3.141592653589793); - x_6 *= Distr[uniform : Fin<20>]; + x_6 *= Unif; } b_4 *= H; b_4 *= X; @@ -93,8 +93,7 @@ proc hillclimb_iter(x : Arr<20, Fin<2>>, x' : Arr<20, Fin<2>>) { locals : (w : F } uproc hillclimb_3_U(x_3 : OUT Arr<20, Fin<2>>, x_0 : AUX Arr<20, Fin<2>>, x_1 : AUX Arr<20, Fin<2>>, x_2 : AUX Arr<20, Fin<2>>, x_0_1 : AUX Arr<20, Fin<2>>, x_0_1_1 : AUX Arr<20, Fin<2>>, x_1_1 : AUX Arr<20, Fin<2>>, aux_28 : AUX Fin<1000>, aux_29 : AUX Fin<20>, aux_30 : AUX Fin<2>, aux_31 : AUX Fin<2>, aux_32 : AUX Fin<1000>, aux_33 : AUX Fin<20>, aux_34 : AUX Arr<20, Fin<20>>, aux_35 : AUX Arr<20, Fin<1000>>, aux_36 : AUX Arr<20, Fin<1000>>, aux_37 : AUX Arr<20, Fin<2>>, aux_38 : AUX Arr<20, Fin<2>>, aux_39 : AUX Arr<20, Arr<20, Fin<2>>>, aux_40 : AUX Arr<20, Fin<1000>>, aux_41 : AUX Arr<20, Fin<2>>, aux_42 : AUX Arr<20, Fin<2>>, aux_43 : AUX Arr<20, Arr<20, Fin<2>>>, aux_44 : AUX Arr<20, Fin<1000>>, aux_45 : AUX Fin<2>, aux_46 : AUX Fin<2>, aux_47 : AUX Arr<20, Fin<2>>, x_2_1 : AUX Arr<20, Fin<2>>, aux_48 : AUX Fin<1000>, aux_49 : AUX Fin<20>, aux_50 : AUX Fin<2>, aux_51 : AUX Fin<2>, aux_52 : AUX Fin<1000>, aux_53 : AUX Fin<20>, aux_54 : AUX Arr<20, Fin<20>>, aux_55 : AUX Arr<20, Fin<1000>>, aux_56 : AUX Arr<20, Fin<1000>>, aux_57 : AUX Arr<20, Fin<2>>, aux_58 : AUX Arr<20, Fin<2>>, aux_59 : AUX Arr<20, Arr<20, Fin<2>>>, aux_60 : AUX Arr<20, Fin<1000>>, aux_61 : AUX Arr<20, Fin<2>>, aux_62 : AUX Arr<20, Fin<2>>, aux_63 : AUX Arr<20, Arr<20, Fin<2>>>, aux_64 : AUX Arr<20, Fin<1000>>, aux_65 : AUX Fin<2>, aux_66 : AUX Fin<2>, aux_67 : AUX Arr<20, Fin<2>>, x_3_1 : AUX Arr<20, Fin<2>>, aux_68 : AUX Fin<1000>, aux_69 : AUX Fin<20>, aux_70 : AUX Fin<2>, aux_71 : AUX Fin<2>, aux_72 : AUX Fin<1000>, aux_73 : AUX Fin<20>, aux_74 : AUX Arr<20, Fin<20>>, aux_75 : AUX Arr<20, Fin<1000>>, aux_76 : AUX Arr<20, Fin<1000>>, aux_77 : AUX Arr<20, Fin<2>>, aux_78 : AUX Arr<20, Fin<2>>, aux_79 : AUX Arr<20, Arr<20, Fin<2>>>, aux_80 : AUX Arr<20, Fin<1000>>, aux_81 : AUX Arr<20, Fin<2>>, aux_82 : AUX Arr<20, Fin<2>>, aux_83 : AUX Arr<20, Arr<20, Fin<2>>>, aux_84 : AUX Arr<20, Fin<1000>>, aux_85 : AUX Fin<2>, aux_86 : AUX Fin<2>, aux_87 : AUX Arr<20, Fin<2>>) { - x_0_1 *= Distr[uniform : Arr<20, Fin<2>>]; - x_0_1, x_0_1_1 *= COPY; + x_0_1, x_0_1_1 *= Distr[uniform : Arr<20, Fin<2>>]; x_0, x_0_1 *= SWAP; call hillclimb_iter_U(x_0, x_1_1, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46, aux_47); x_1, x_1_1 *= SWAP; diff --git a/examples/matrix_search/depth3_NAND_formula.qpl b/examples/matrix_search/depth3_NAND_formula.qpl index a42cd4c..9cd810b 100644 --- a/examples/matrix_search/depth3_NAND_formula.qpl +++ b/examples/matrix_search/depth3_NAND_formula.qpl @@ -16,23 +16,23 @@ proc NOR_0(i0 : Fin<20>, j0 : Fin<10>, k0 : Fin<10>, e' : Fin<2>) { locals : (e uproc UAny(i1 : Fin<20>, j1 : Fin<10>, ret : OUT Fin<2>, s_result : OUT Fin<10>, aux : AUX Fin<2>, aux_1 : AUX Fin<2>, aux_2 : AUX Fin<2>, aux_3 : AUX Fin<2>, ctrl : AUX Arr<146, Fin<2>>, pred_out : AUX Arr<146, Fin<2>>, n_iter : AUX Arr<146, Fin<3>>, s_arg : AUX Arr<146, Fin<10>>) { for (#run_ix in 0 .. < 146) { - n_iter[#run_ix] *= Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 3) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call NOR_0_U(i1, j1, s_arg[#run_ix], aux_3, aux, aux_1, aux_2); ctrl[#run_ix], aux_3, pred_out[#run_ix] *= Toffoli; call-adj NOR_0_U(i1, j1, s_arg[#run_ix], aux_3, aux, aux_1, aux_2); - s_arg[#run_ix] *= Adj-Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call NOR_0_U(i1, j1, s_arg[#run_ix], aux_3, aux, aux_1, aux_2); ctrl[#run_ix], aux_3, pred_out[#run_ix] *= Toffoli; @@ -53,12 +53,12 @@ uproc NOR_1_U(i1 : IN Fin<20>, j1 : IN Fin<10>, nor_1 : OUT Fin<2>, or_1 : AUX F uproc Grover[k](i1 : Fin<20>, j1 : Fin<10>, x : IN Fin<10>, ret_1 : OUT Fin<2>, aux_4 : AUX Fin<2>, aux_5 : AUX Fin<2>, aux_6 : AUX Fin<2>) { ret_1 *= X; ret_1 *= H; - x *= Distr[uniform : Fin<10>]; + x *= Unif; repeat (#k) { call NOR_0_U(i1, j1, x, ret_1, aux_4, aux_5, aux_6); - x *= Adj-Distr[uniform : Fin<10>]; + x *= Adj-Unif; x *= PhaseOnZero(3.141592653589793); - x *= Distr[uniform : Fin<10>]; + x *= Unif; } ret_1 *= H; ret_1 *= X; @@ -89,23 +89,23 @@ proc NOR_1(i1 : Fin<20>, j1 : Fin<10>, nor_1 : Fin<2>) { locals : (or_1 : Fin<2> uproc UAny_1(i2 : Fin<20>, ret_2 : OUT Fin<2>, s_result_2 : OUT Fin<10>, aux_7 : AUX Fin<2>, aux_8 : AUX Fin<2>, aux_9 : AUX Fin<10>, aux_10 : AUX Fin<2>, aux_11 : AUX Fin<2>, aux_12 : AUX Fin<2>, aux_13 : AUX Fin<2>, aux_14 : AUX Arr<146, Fin<2>>, aux_15 : AUX Arr<146, Fin<2>>, aux_16 : AUX Arr<146, Fin<3>>, aux_17 : AUX Arr<146, Fin<10>>, aux_18 : AUX Fin<10>, aux_19 : AUX Fin<2>, aux_20 : AUX Fin<2>, aux_21 : AUX Fin<2>, aux_22 : AUX Fin<2>, aux_23 : AUX Arr<146, Fin<2>>, aux_24 : AUX Arr<146, Fin<2>>, aux_25 : AUX Arr<146, Fin<3>>, aux_26 : AUX Arr<146, Fin<10>>, aux_27 : AUX Fin<2>, aux_28 : AUX Fin<2>, ctrl_1 : AUX Arr<60, Fin<2>>, pred_out_1 : AUX Arr<60, Fin<2>>, n_iter_1 : AUX Arr<60, Fin<3>>, s_arg_1 : AUX Arr<60, Fin<10>>) { for (#run_ix in 0 .. < 60) { - n_iter_1[#run_ix] *= Distr[uniform : Fin<3>]; + n_iter_1[#run_ix] *= Unif; pred_out_1[#run_ix] *= X; pred_out_1[#run_ix] *= H; - s_arg_1[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg_1[#run_ix] *= Unif; for (#LIM in 0 .. < 3) { n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; call NOR_1_U(i2, s_arg_1[#run_ix], aux_28, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27); ctrl_1[#run_ix], aux_28, pred_out_1[#run_ix] *= Toffoli; call-adj NOR_1_U(i2, s_arg_1[#run_ix], aux_28, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27); - s_arg_1[#run_ix] *= Adj-Distr[uniform : Fin<10>]; + s_arg_1[#run_ix] *= Adj-Unif; s_arg_1[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg_1[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg_1[#run_ix] *= Unif; n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out_1[#run_ix] *= H; pred_out_1[#run_ix] *= X; - n_iter_1[#run_ix] *= Adj-Distr[uniform : Fin<3>]; + n_iter_1[#run_ix] *= Unif; ctrl_1[#run_ix] *= X; call NOR_1_U(i2, s_arg_1[#run_ix], aux_28, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23, aux_24, aux_25, aux_26, aux_27); ctrl_1[#run_ix], aux_28, pred_out_1[#run_ix] *= Toffoli; @@ -126,12 +126,12 @@ uproc NOR_2_U(i2 : IN Fin<20>, nor_2 : OUT Fin<2>, or_2 : AUX Fin<2>, or_2_1 : A uproc Grover_1[k](i2 : Fin<20>, x_1 : IN Fin<10>, ret_3 : OUT Fin<2>, aux_29 : AUX Fin<2>, aux_30 : AUX Fin<2>, aux_31 : AUX Fin<10>, aux_32 : AUX Fin<2>, aux_33 : AUX Fin<2>, aux_34 : AUX Fin<2>, aux_35 : AUX Fin<2>, aux_36 : AUX Arr<146, Fin<2>>, aux_37 : AUX Arr<146, Fin<2>>, aux_38 : AUX Arr<146, Fin<3>>, aux_39 : AUX Arr<146, Fin<10>>, aux_40 : AUX Fin<10>, aux_41 : AUX Fin<2>, aux_42 : AUX Fin<2>, aux_43 : AUX Fin<2>, aux_44 : AUX Fin<2>, aux_45 : AUX Arr<146, Fin<2>>, aux_46 : AUX Arr<146, Fin<2>>, aux_47 : AUX Arr<146, Fin<3>>, aux_48 : AUX Arr<146, Fin<10>>, aux_49 : AUX Fin<2>) { ret_3 *= X; ret_3 *= H; - x_1 *= Distr[uniform : Fin<10>]; + x_1 *= Unif; repeat (#k) { call NOR_1_U(i2, x_1, ret_3, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46, aux_47, aux_48, aux_49); - x_1 *= Adj-Distr[uniform : Fin<10>]; + x_1 *= Adj-Unif; x_1 *= PhaseOnZero(3.141592653589793); - x_1 *= Distr[uniform : Fin<10>]; + x_1 *= Unif; } ret_3 *= H; ret_3 *= X; @@ -162,23 +162,23 @@ proc NOR_2(i2 : Fin<20>, nor_2 : Fin<2>) { locals : (or_2 : Fin<2>) } { uproc UAny_2(ret_4 : OUT Fin<2>, s_result_4 : OUT Fin<20>, aux_50 : AUX Fin<2>, aux_51 : AUX Fin<2>, aux_52 : AUX Fin<10>, aux_53 : AUX Fin<2>, aux_54 : AUX Fin<2>, aux_55 : AUX Fin<10>, aux_56 : AUX Fin<2>, aux_57 : AUX Fin<2>, aux_58 : AUX Fin<2>, aux_59 : AUX Fin<2>, aux_60 : AUX Arr<146, Fin<2>>, aux_61 : AUX Arr<146, Fin<2>>, aux_62 : AUX Arr<146, Fin<3>>, aux_63 : AUX Arr<146, Fin<10>>, aux_64 : AUX Fin<10>, aux_65 : AUX Fin<2>, aux_66 : AUX Fin<2>, aux_67 : AUX Fin<2>, aux_68 : AUX Fin<2>, aux_69 : AUX Arr<146, Fin<2>>, aux_70 : AUX Arr<146, Fin<2>>, aux_71 : AUX Arr<146, Fin<3>>, aux_72 : AUX Arr<146, Fin<10>>, aux_73 : AUX Fin<2>, aux_74 : AUX Fin<2>, aux_75 : AUX Arr<60, Fin<2>>, aux_76 : AUX Arr<60, Fin<2>>, aux_77 : AUX Arr<60, Fin<3>>, aux_78 : AUX Arr<60, Fin<10>>, aux_79 : AUX Fin<10>, aux_80 : AUX Fin<2>, aux_81 : AUX Fin<2>, aux_82 : AUX Fin<10>, aux_83 : AUX Fin<2>, aux_84 : AUX Fin<2>, aux_85 : AUX Fin<2>, aux_86 : AUX Fin<2>, aux_87 : AUX Arr<146, Fin<2>>, aux_88 : AUX Arr<146, Fin<2>>, aux_89 : AUX Arr<146, Fin<3>>, aux_90 : AUX Arr<146, Fin<10>>, aux_91 : AUX Fin<10>, aux_92 : AUX Fin<2>, aux_93 : AUX Fin<2>, aux_94 : AUX Fin<2>, aux_95 : AUX Fin<2>, aux_96 : AUX Arr<146, Fin<2>>, aux_97 : AUX Arr<146, Fin<2>>, aux_98 : AUX Arr<146, Fin<3>>, aux_99 : AUX Arr<146, Fin<10>>, aux_100 : AUX Fin<2>, aux_101 : AUX Fin<2>, aux_102 : AUX Arr<60, Fin<2>>, aux_103 : AUX Arr<60, Fin<2>>, aux_104 : AUX Arr<60, Fin<3>>, aux_105 : AUX Arr<60, Fin<10>>, aux_106 : AUX Fin<2>, aux_107 : AUX Fin<2>, ctrl_2 : AUX Arr<16, Fin<2>>, pred_out_2 : AUX Arr<16, Fin<2>>, n_iter_2 : AUX Arr<16, Fin<4>>, s_arg_2 : AUX Arr<16, Fin<20>>) { for (#run_ix in 0 .. < 16) { - n_iter_2[#run_ix] *= Distr[uniform : Fin<4>]; + n_iter_2[#run_ix] *= Unif; pred_out_2[#run_ix] *= X; pred_out_2[#run_ix] *= H; - s_arg_2[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg_2[#run_ix] *= Unif; for (#LIM in 0 .. < 4) { n_iter_2[#run_ix], ctrl_2[#run_ix] *= Embed[(a) => (a <= #LIM)]; call NOR_2_U(s_arg_2[#run_ix], aux_107, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106); ctrl_2[#run_ix], aux_107, pred_out_2[#run_ix] *= Toffoli; call-adj NOR_2_U(s_arg_2[#run_ix], aux_107, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106); - s_arg_2[#run_ix] *= Adj-Distr[uniform : Fin<20>]; + s_arg_2[#run_ix] *= Adj-Unif; s_arg_2[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg_2[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg_2[#run_ix] *= Unif; n_iter_2[#run_ix], ctrl_2[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out_2[#run_ix] *= H; pred_out_2[#run_ix] *= X; - n_iter_2[#run_ix] *= Adj-Distr[uniform : Fin<4>]; + n_iter_2[#run_ix] *= Unif; ctrl_2[#run_ix] *= X; call NOR_2_U(s_arg_2[#run_ix], aux_107, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106); ctrl_2[#run_ix], aux_107, pred_out_2[#run_ix] *= Toffoli; @@ -197,12 +197,12 @@ uproc Depth3Nand_U(or_3 : OUT Fin<2>, or_3_1 : AUX Fin<2>, s_result_4 : AUX Fin< uproc Grover_2[k](x_2 : IN Fin<20>, ret_5 : OUT Fin<2>, aux_108 : AUX Fin<2>, aux_109 : AUX Fin<2>, aux_110 : AUX Fin<10>, aux_111 : AUX Fin<2>, aux_112 : AUX Fin<2>, aux_113 : AUX Fin<10>, aux_114 : AUX Fin<2>, aux_115 : AUX Fin<2>, aux_116 : AUX Fin<2>, aux_117 : AUX Fin<2>, aux_118 : AUX Arr<146, Fin<2>>, aux_119 : AUX Arr<146, Fin<2>>, aux_120 : AUX Arr<146, Fin<3>>, aux_121 : AUX Arr<146, Fin<10>>, aux_122 : AUX Fin<10>, aux_123 : AUX Fin<2>, aux_124 : AUX Fin<2>, aux_125 : AUX Fin<2>, aux_126 : AUX Fin<2>, aux_127 : AUX Arr<146, Fin<2>>, aux_128 : AUX Arr<146, Fin<2>>, aux_129 : AUX Arr<146, Fin<3>>, aux_130 : AUX Arr<146, Fin<10>>, aux_131 : AUX Fin<2>, aux_132 : AUX Fin<2>, aux_133 : AUX Arr<60, Fin<2>>, aux_134 : AUX Arr<60, Fin<2>>, aux_135 : AUX Arr<60, Fin<3>>, aux_136 : AUX Arr<60, Fin<10>>, aux_137 : AUX Fin<10>, aux_138 : AUX Fin<2>, aux_139 : AUX Fin<2>, aux_140 : AUX Fin<10>, aux_141 : AUX Fin<2>, aux_142 : AUX Fin<2>, aux_143 : AUX Fin<2>, aux_144 : AUX Fin<2>, aux_145 : AUX Arr<146, Fin<2>>, aux_146 : AUX Arr<146, Fin<2>>, aux_147 : AUX Arr<146, Fin<3>>, aux_148 : AUX Arr<146, Fin<10>>, aux_149 : AUX Fin<10>, aux_150 : AUX Fin<2>, aux_151 : AUX Fin<2>, aux_152 : AUX Fin<2>, aux_153 : AUX Fin<2>, aux_154 : AUX Arr<146, Fin<2>>, aux_155 : AUX Arr<146, Fin<2>>, aux_156 : AUX Arr<146, Fin<3>>, aux_157 : AUX Arr<146, Fin<10>>, aux_158 : AUX Fin<2>, aux_159 : AUX Fin<2>, aux_160 : AUX Arr<60, Fin<2>>, aux_161 : AUX Arr<60, Fin<2>>, aux_162 : AUX Arr<60, Fin<3>>, aux_163 : AUX Arr<60, Fin<10>>, aux_164 : AUX Fin<2>) { ret_5 *= X; ret_5 *= H; - x_2 *= Distr[uniform : Fin<20>]; + x_2 *= Unif; repeat (#k) { call NOR_2_U(x_2, ret_5, aux_108, aux_109, aux_110, aux_111, aux_112, aux_113, aux_114, aux_115, aux_116, aux_117, aux_118, aux_119, aux_120, aux_121, aux_122, aux_123, aux_124, aux_125, aux_126, aux_127, aux_128, aux_129, aux_130, aux_131, aux_132, aux_133, aux_134, aux_135, aux_136, aux_137, aux_138, aux_139, aux_140, aux_141, aux_142, aux_143, aux_144, aux_145, aux_146, aux_147, aux_148, aux_149, aux_150, aux_151, aux_152, aux_153, aux_154, aux_155, aux_156, aux_157, aux_158, aux_159, aux_160, aux_161, aux_162, aux_163, aux_164); - x_2 *= Adj-Distr[uniform : Fin<20>]; + x_2 *= Adj-Unif; x_2 *= PhaseOnZero(3.141592653589793); - x_2 *= Distr[uniform : Fin<20>]; + x_2 *= Unif; } ret_5 *= H; ret_5 *= X; diff --git a/examples/matrix_search/matrix_search.qpl b/examples/matrix_search/matrix_search.qpl index 770ad85..d7d4cbb 100644 --- a/examples/matrix_search/matrix_search.qpl +++ b/examples/matrix_search/matrix_search.qpl @@ -16,23 +16,23 @@ proc IsEntryZero(i : Fin<20>, j : Fin<10>, e : Fin<2>) { locals : () } { uproc UAny(i : Fin<20>, ret : OUT Fin<2>, s_result : OUT Fin<10>, aux : AUX Fin<2>, aux_1 : AUX Fin<2>, aux_2 : AUX Fin<2>, ctrl : AUX Arr<59, Fin<2>>, pred_out : AUX Arr<59, Fin<2>>, n_iter : AUX Arr<59, Fin<3>>, s_arg : AUX Arr<59, Fin<10>>) { for (#run_ix in 0 .. < 59) { - n_iter[#run_ix] *= Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 3) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call IsEntryZero_U(i, s_arg[#run_ix], aux_2, aux, aux_1); ctrl[#run_ix], aux_2, pred_out[#run_ix] *= Toffoli; call-adj IsEntryZero_U(i, s_arg[#run_ix], aux_2, aux, aux_1); - s_arg[#run_ix] *= Adj-Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call IsEntryZero_U(i, s_arg[#run_ix], aux_2, aux, aux_1); ctrl[#run_ix], aux_2, pred_out[#run_ix] *= Toffoli; @@ -53,12 +53,12 @@ uproc IsRowAllOnes_U(i : IN Fin<20>, ok : OUT Fin<2>, hasZero : AUX Fin<2>, hasZ uproc Grover[k](i : Fin<20>, x : IN Fin<10>, ret_1 : OUT Fin<2>, aux_3 : AUX Fin<2>, aux_4 : AUX Fin<2>) { ret_1 *= X; ret_1 *= H; - x *= Distr[uniform : Fin<10>]; + x *= Unif; repeat (#k) { call IsEntryZero_U(i, x, ret_1, aux_3, aux_4); - x *= Adj-Distr[uniform : Fin<10>]; + x *= Adj-Unif; x *= PhaseOnZero(3.141592653589793); - x *= Distr[uniform : Fin<10>]; + x *= Unif; } ret_1 *= H; ret_1 *= X; @@ -89,23 +89,23 @@ proc IsRowAllOnes(i : Fin<20>, ok : Fin<2>) { locals : (hasZero : Fin<2>) } { uproc UAny_1(ret_2 : OUT Fin<2>, s_result_2 : OUT Fin<20>, aux_5 : AUX Fin<2>, aux_6 : AUX Fin<2>, aux_7 : AUX Fin<10>, aux_8 : AUX Fin<2>, aux_9 : AUX Fin<2>, aux_10 : AUX Fin<2>, aux_11 : AUX Arr<59, Fin<2>>, aux_12 : AUX Arr<59, Fin<2>>, aux_13 : AUX Arr<59, Fin<3>>, aux_14 : AUX Arr<59, Fin<10>>, aux_15 : AUX Fin<10>, aux_16 : AUX Fin<2>, aux_17 : AUX Fin<2>, aux_18 : AUX Fin<2>, aux_19 : AUX Arr<59, Fin<2>>, aux_20 : AUX Arr<59, Fin<2>>, aux_21 : AUX Arr<59, Fin<3>>, aux_22 : AUX Arr<59, Fin<10>>, aux_23 : AUX Fin<2>, aux_24 : AUX Fin<2>, ctrl_1 : AUX Arr<16, Fin<2>>, pred_out_1 : AUX Arr<16, Fin<2>>, n_iter_1 : AUX Arr<16, Fin<4>>, s_arg_1 : AUX Arr<16, Fin<20>>) { for (#run_ix in 0 .. < 16) { - n_iter_1[#run_ix] *= Distr[uniform : Fin<4>]; + n_iter_1[#run_ix] *= Unif; pred_out_1[#run_ix] *= X; pred_out_1[#run_ix] *= H; - s_arg_1[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg_1[#run_ix] *= Unif; for (#LIM in 0 .. < 4) { n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; call IsRowAllOnes_U(s_arg_1[#run_ix], aux_24, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23); ctrl_1[#run_ix], aux_24, pred_out_1[#run_ix] *= Toffoli; call-adj IsRowAllOnes_U(s_arg_1[#run_ix], aux_24, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23); - s_arg_1[#run_ix] *= Adj-Distr[uniform : Fin<20>]; + s_arg_1[#run_ix] *= Adj-Unif; s_arg_1[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg_1[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg_1[#run_ix] *= Unif; n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out_1[#run_ix] *= H; pred_out_1[#run_ix] *= X; - n_iter_1[#run_ix] *= Adj-Distr[uniform : Fin<4>]; + n_iter_1[#run_ix] *= Unif; ctrl_1[#run_ix] *= X; call IsRowAllOnes_U(s_arg_1[#run_ix], aux_24, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22, aux_23); ctrl_1[#run_ix], aux_24, pred_out_1[#run_ix] *= Toffoli; @@ -124,12 +124,12 @@ uproc HasAllOnesRow_U(ok : OUT Fin<2>, ok_2 : AUX Fin<2>, s_result_2 : AUX Fin<2 uproc Grover_1[k](x_1 : IN Fin<20>, ret_3 : OUT Fin<2>, aux_25 : AUX Fin<2>, aux_26 : AUX Fin<2>, aux_27 : AUX Fin<10>, aux_28 : AUX Fin<2>, aux_29 : AUX Fin<2>, aux_30 : AUX Fin<2>, aux_31 : AUX Arr<59, Fin<2>>, aux_32 : AUX Arr<59, Fin<2>>, aux_33 : AUX Arr<59, Fin<3>>, aux_34 : AUX Arr<59, Fin<10>>, aux_35 : AUX Fin<10>, aux_36 : AUX Fin<2>, aux_37 : AUX Fin<2>, aux_38 : AUX Fin<2>, aux_39 : AUX Arr<59, Fin<2>>, aux_40 : AUX Arr<59, Fin<2>>, aux_41 : AUX Arr<59, Fin<3>>, aux_42 : AUX Arr<59, Fin<10>>, aux_43 : AUX Fin<2>) { ret_3 *= X; ret_3 *= H; - x_1 *= Distr[uniform : Fin<20>]; + x_1 *= Unif; repeat (#k) { call IsRowAllOnes_U(x_1, ret_3, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43); - x_1 *= Adj-Distr[uniform : Fin<20>]; + x_1 *= Adj-Unif; x_1 *= PhaseOnZero(3.141592653589793); - x_1 *= Distr[uniform : Fin<20>]; + x_1 *= Unif; } ret_3 *= H; ret_3 *= X; diff --git a/examples/primitives/Makefile b/examples/primitives/Makefile index da185e9..357515c 100644 --- a/examples/primitives/Makefile +++ b/examples/primitives/Makefile @@ -1,6 +1,8 @@ PROJ_DEPS=../../src ../../tools ../../traq.cabal -all: any.qpl any-qiskit.py max.qpl +all: any.qpl max.qpl + +full: all any-qiskit.py %.qpl: %.traq $(PROJ_DEPS) cd ../../ && cabal run traq -- \ diff --git a/examples/primitives/any.qpl b/examples/primitives/any.qpl index d73c98f..6a4fdae 100644 --- a/examples/primitives/any.qpl +++ b/examples/primitives/any.qpl @@ -4,23 +4,23 @@ ext proc Oracle(Fin<20>, Fin<2>); uproc UAny(ret : OUT Fin<2>, s_result : OUT Fin<20>, aux : AUX Fin<2>, ctrl : AUX Arr<10, Fin<2>>, pred_out : AUX Arr<10, Fin<2>>, n_iter : AUX Arr<10, Fin<4>>, s_arg : AUX Arr<10, Fin<20>>) { for (#run_ix in 0 .. < 10) { - n_iter[#run_ix] *= Distr[uniform : Fin<4>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 4) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call Oracle_U(s_arg[#run_ix], aux); ctrl[#run_ix], aux, pred_out[#run_ix] *= Toffoli; call-adj Oracle_U(s_arg[#run_ix], aux); - s_arg[#run_ix] *= Adj-Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Fin<20>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<4>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call Oracle_U(s_arg[#run_ix], aux); ctrl[#run_ix], aux, pred_out[#run_ix] *= Toffoli; @@ -39,12 +39,12 @@ uproc main_U(ok : OUT Fin<2>, ok_1 : AUX Fin<2>, s_result : AUX Fin<20>, aux : A uproc Grover[k](x : IN Fin<20>, ret_1 : OUT Fin<2>) { ret_1 *= X; ret_1 *= H; - x *= Distr[uniform : Fin<20>]; + x *= Unif; repeat (#k) { call Oracle_U(x, ret_1); - x *= Adj-Distr[uniform : Fin<20>]; + x *= Adj-Unif; x *= PhaseOnZero(3.141592653589793); - x *= Distr[uniform : Fin<20>]; + x *= Unif; } ret_1 *= H; ret_1 *= X; diff --git a/examples/primitives/max.qpl b/examples/primitives/max.qpl index 957757f..271b09d 100644 --- a/examples/primitives/max.qpl +++ b/examples/primitives/max.qpl @@ -23,12 +23,12 @@ uproc Compare(y_2 : Fin<30>, x_3 : Fin<20>, b : Fin<2>, out_1 : AUX Fin<30>) { uproc Grover[k](y_3 : Fin<30>, x_4 : Fin<20>, b_1 : Fin<2>, aux : AUX Fin<30>) { b_1 *= X; b_1 *= H; - x_4 *= Distr[uniform : Fin<20>]; + x_4 *= Unif; repeat (#k) { call Compare(y_3, x_4, b_1, aux); - x_4 *= Adj-Distr[uniform : Fin<20>]; + x_4 *= Adj-Unif; x_4 *= PhaseOnZero(3.141592653589793); - x_4 *= Distr[uniform : Fin<20>]; + x_4 *= Unif; } b_1 *= H; b_1 *= X; diff --git a/examples/search/clustering.qpl b/examples/search/clustering.qpl index b4fe8cb..770525b 100644 --- a/examples/search/clustering.qpl +++ b/examples/search/clustering.qpl @@ -32,23 +32,23 @@ proc check(dmax : Fin<100>, ij : Tup, Fin<10>>, ok : Fin<2>) { locals : uproc USearch(dmax : Fin<100>, ret : OUT Fin<2>, ret_1 : OUT Tup, Fin<10>>, aux : AUX Fin<10>, aux_1 : AUX Fin<10>, aux_2 : AUX Arr<10, Fin<100>>, aux_3 : AUX Arr<10, Fin<100>>, aux_4 : AUX Fin<100>, aux_5 : AUX Fin<10>, aux_6 : AUX Fin<10>, aux_7 : AUX Arr<10, Fin<100>>, aux_8 : AUX Arr<10, Fin<100>>, aux_9 : AUX Fin<100>, aux_10 : AUX Fin<2>, aux_11 : AUX Fin<2>, ctrl : AUX Arr<17, Fin<2>>, pred_out : AUX Arr<17, Fin<2>>, n_iter : AUX Arr<17, Fin<8>>, s_arg : AUX Arr<17, Tup, Fin<10>>>) { for (#run_ix in 0 .. < 17) { - n_iter[#run_ix] *= Distr[uniform : Fin<8>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Tup, Fin<10>>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 8) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call check_U(dmax, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); ctrl[#run_ix], aux_11, pred_out[#run_ix] *= Toffoli; call-adj check_U(dmax, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); - s_arg[#run_ix] *= Adj-Distr[uniform : Tup, Fin<10>>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Tup, Fin<10>>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<8>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call check_U(dmax, s_arg[#run_ix], aux_11, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10); ctrl[#run_ix], aux_11, pred_out[#run_ix] *= Toffoli; @@ -77,12 +77,12 @@ uproc loop_body_U(i : IN Fin<10>, j : IN Fin<10>, i' : OUT Fin<10>, j' : OUT Fin uproc Grover[k](dmax : Fin<100>, x : IN Tup, Fin<10>>, ret_2 : OUT Fin<2>, aux_12 : AUX Fin<10>, aux_13 : AUX Fin<10>, aux_14 : AUX Arr<10, Fin<100>>, aux_15 : AUX Arr<10, Fin<100>>, aux_16 : AUX Fin<100>, aux_17 : AUX Fin<10>, aux_18 : AUX Fin<10>, aux_19 : AUX Arr<10, Fin<100>>, aux_20 : AUX Arr<10, Fin<100>>, aux_21 : AUX Fin<100>, aux_22 : AUX Fin<2>) { ret_2 *= X; ret_2 *= H; - x *= Distr[uniform : Tup, Fin<10>>]; + x *= Unif; repeat (#k) { call check_U(dmax, x, ret_2, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22); - x *= Adj-Distr[uniform : Tup, Fin<10>>]; + x *= Adj-Unif; x *= PhaseOnZero(3.141592653589793); - x *= Distr[uniform : Tup, Fin<10>>]; + x *= Unif; } ret_2 *= H; ret_2 *= X; @@ -116,11 +116,9 @@ proc loop_body(i : Fin<10>, j : Fin<10>, i' : Fin<10>, j' : Fin<10>) { locals : } uproc main_U(i : OUT Fin<10>, j : OUT Fin<10>, iter : AUX Fin<4>, i_2 : AUX Fin<10>, i_2_1 : AUX Fin<10>, j_3 : AUX Fin<10>, j_3_1 : AUX Fin<10>, i_3 : AUX Fin<10>, j_4 : AUX Fin<10>, aux_23 : AUX Arr<10, Fin<100>>, aux_24 : AUX Arr<10, Fin<100>>, aux_25 : AUX Fin<100>, aux_26 : AUX Fin<2>, aux_27 : AUX Tup, Fin<10>>, aux_28 : AUX Arr<10, Fin<100>>, aux_29 : AUX Arr<10, Fin<100>>, aux_30 : AUX Fin<100>, aux_31 : AUX Fin<2>, aux_32 : AUX Tup, Fin<10>>, aux_33 : AUX Fin<10>, aux_34 : AUX Fin<10>, aux_35 : AUX Arr<10, Fin<100>>, aux_36 : AUX Arr<10, Fin<100>>, aux_37 : AUX Fin<100>, aux_38 : AUX Fin<10>, aux_39 : AUX Fin<10>, aux_40 : AUX Arr<10, Fin<100>>, aux_41 : AUX Arr<10, Fin<100>>, aux_42 : AUX Fin<100>, aux_43 : AUX Fin<2>, aux_44 : AUX Fin<2>, aux_45 : AUX Arr<17, Fin<2>>, aux_46 : AUX Arr<17, Fin<2>>, aux_47 : AUX Arr<17, Fin<8>>, aux_48 : AUX Arr<17, Tup, Fin<10>>>, aux_49 : AUX Fin<10>, aux_50 : AUX Fin<10>, aux_51 : AUX Arr<10, Fin<100>>, aux_52 : AUX Arr<10, Fin<100>>, aux_53 : AUX Fin<100>, aux_54 : AUX Fin<10>, aux_55 : AUX Fin<10>, aux_56 : AUX Arr<10, Fin<100>>, aux_57 : AUX Arr<10, Fin<100>>, aux_58 : AUX Fin<100>, aux_59 : AUX Fin<2>, aux_60 : AUX Fin<2>, aux_61 : AUX Arr<17, Fin<2>>, aux_62 : AUX Arr<17, Fin<2>>, aux_63 : AUX Arr<17, Fin<8>>, aux_64 : AUX Arr<17, Tup, Fin<10>>>, aux_65 : AUX Fin<10>, aux_66 : AUX Fin<10>, iter_1 : AUX Fin<4>, i_4 : AUX Fin<10>, j_5 : AUX Fin<10>, aux_67 : AUX Arr<10, Fin<100>>, aux_68 : AUX Arr<10, Fin<100>>, aux_69 : AUX Fin<100>, aux_70 : AUX Fin<2>, aux_71 : AUX Tup, Fin<10>>, aux_72 : AUX Arr<10, Fin<100>>, aux_73 : AUX Arr<10, Fin<100>>, aux_74 : AUX Fin<100>, aux_75 : AUX Fin<2>, aux_76 : AUX Tup, Fin<10>>, aux_77 : AUX Fin<10>, aux_78 : AUX Fin<10>, aux_79 : AUX Arr<10, Fin<100>>, aux_80 : AUX Arr<10, Fin<100>>, aux_81 : AUX Fin<100>, aux_82 : AUX Fin<10>, aux_83 : AUX Fin<10>, aux_84 : AUX Arr<10, Fin<100>>, aux_85 : AUX Arr<10, Fin<100>>, aux_86 : AUX Fin<100>, aux_87 : AUX Fin<2>, aux_88 : AUX Fin<2>, aux_89 : AUX Arr<17, Fin<2>>, aux_90 : AUX Arr<17, Fin<2>>, aux_91 : AUX Arr<17, Fin<8>>, aux_92 : AUX Arr<17, Tup, Fin<10>>>, aux_93 : AUX Fin<10>, aux_94 : AUX Fin<10>, aux_95 : AUX Arr<10, Fin<100>>, aux_96 : AUX Arr<10, Fin<100>>, aux_97 : AUX Fin<100>, aux_98 : AUX Fin<10>, aux_99 : AUX Fin<10>, aux_100 : AUX Arr<10, Fin<100>>, aux_101 : AUX Arr<10, Fin<100>>, aux_102 : AUX Fin<100>, aux_103 : AUX Fin<2>, aux_104 : AUX Fin<2>, aux_105 : AUX Arr<17, Fin<2>>, aux_106 : AUX Arr<17, Fin<2>>, aux_107 : AUX Arr<17, Fin<8>>, aux_108 : AUX Arr<17, Tup, Fin<10>>>, aux_109 : AUX Fin<10>, aux_110 : AUX Fin<10>, iter_2 : AUX Fin<4>, i_5 : AUX Fin<10>, j_6 : AUX Fin<10>, aux_111 : AUX Arr<10, Fin<100>>, aux_112 : AUX Arr<10, Fin<100>>, aux_113 : AUX Fin<100>, aux_114 : AUX Fin<2>, aux_115 : AUX Tup, Fin<10>>, aux_116 : AUX Arr<10, Fin<100>>, aux_117 : AUX Arr<10, Fin<100>>, aux_118 : AUX Fin<100>, aux_119 : AUX Fin<2>, aux_120 : AUX Tup, Fin<10>>, aux_121 : AUX Fin<10>, aux_122 : AUX Fin<10>, aux_123 : AUX Arr<10, Fin<100>>, aux_124 : AUX Arr<10, Fin<100>>, aux_125 : AUX Fin<100>, aux_126 : AUX Fin<10>, aux_127 : AUX Fin<10>, aux_128 : AUX Arr<10, Fin<100>>, aux_129 : AUX Arr<10, Fin<100>>, aux_130 : AUX Fin<100>, aux_131 : AUX Fin<2>, aux_132 : AUX Fin<2>, aux_133 : AUX Arr<17, Fin<2>>, aux_134 : AUX Arr<17, Fin<2>>, aux_135 : AUX Arr<17, Fin<8>>, aux_136 : AUX Arr<17, Tup, Fin<10>>>, aux_137 : AUX Fin<10>, aux_138 : AUX Fin<10>, aux_139 : AUX Arr<10, Fin<100>>, aux_140 : AUX Arr<10, Fin<100>>, aux_141 : AUX Fin<100>, aux_142 : AUX Fin<10>, aux_143 : AUX Fin<10>, aux_144 : AUX Arr<10, Fin<100>>, aux_145 : AUX Arr<10, Fin<100>>, aux_146 : AUX Fin<100>, aux_147 : AUX Fin<2>, aux_148 : AUX Fin<2>, aux_149 : AUX Arr<17, Fin<2>>, aux_150 : AUX Arr<17, Fin<2>>, aux_151 : AUX Arr<17, Fin<8>>, aux_152 : AUX Arr<17, Tup, Fin<10>>>, aux_153 : AUX Fin<10>, aux_154 : AUX Fin<10>, iter_3 : AUX Fin<4>, i_6 : AUX Fin<10>, j_7 : AUX Fin<10>, aux_155 : AUX Arr<10, Fin<100>>, aux_156 : AUX Arr<10, Fin<100>>, aux_157 : AUX Fin<100>, aux_158 : AUX Fin<2>, aux_159 : AUX Tup, Fin<10>>, aux_160 : AUX Arr<10, Fin<100>>, aux_161 : AUX Arr<10, Fin<100>>, aux_162 : AUX Fin<100>, aux_163 : AUX Fin<2>, aux_164 : AUX Tup, Fin<10>>, aux_165 : AUX Fin<10>, aux_166 : AUX Fin<10>, aux_167 : AUX Arr<10, Fin<100>>, aux_168 : AUX Arr<10, Fin<100>>, aux_169 : AUX Fin<100>, aux_170 : AUX Fin<10>, aux_171 : AUX Fin<10>, aux_172 : AUX Arr<10, Fin<100>>, aux_173 : AUX Arr<10, Fin<100>>, aux_174 : AUX Fin<100>, aux_175 : AUX Fin<2>, aux_176 : AUX Fin<2>, aux_177 : AUX Arr<17, Fin<2>>, aux_178 : AUX Arr<17, Fin<2>>, aux_179 : AUX Arr<17, Fin<8>>, aux_180 : AUX Arr<17, Tup, Fin<10>>>, aux_181 : AUX Fin<10>, aux_182 : AUX Fin<10>, aux_183 : AUX Arr<10, Fin<100>>, aux_184 : AUX Arr<10, Fin<100>>, aux_185 : AUX Fin<100>, aux_186 : AUX Fin<10>, aux_187 : AUX Fin<10>, aux_188 : AUX Arr<10, Fin<100>>, aux_189 : AUX Arr<10, Fin<100>>, aux_190 : AUX Fin<100>, aux_191 : AUX Fin<2>, aux_192 : AUX Fin<2>, aux_193 : AUX Arr<17, Fin<2>>, aux_194 : AUX Arr<17, Fin<2>>, aux_195 : AUX Arr<17, Fin<8>>, aux_196 : AUX Arr<17, Tup, Fin<10>>>, aux_197 : AUX Fin<10>, aux_198 : AUX Fin<10>) { - i_2 *= Distr[uniform : Fin<10>]; - i_2, i_2_1 *= COPY; + i_2, i_2_1 *= Distr[uniform : Fin<10>]; i, i_2 *= SWAP; - j_3 *= Distr[uniform : Fin<10>]; - j_3, j_3_1 *= COPY; + j_3, j_3_1 *= Distr[uniform : Fin<10>]; j, j_3 *= SWAP; iter *= Embed[() => const 0:Fin<4>]; iter, iter *= SWAP; diff --git a/examples/search/triangle_finding.qpl b/examples/search/triangle_finding.qpl index 7ba7ebb..b6e39de 100644 --- a/examples/search/triangle_finding.qpl +++ b/examples/search/triangle_finding.qpl @@ -46,23 +46,23 @@ proc CompletesTriangle(i : Fin<10>, j : Fin<10>, k : Fin<10>, result : Fin<2>) { uproc UAny(i : Fin<10>, j : Fin<10>, ret : OUT Fin<2>, s_result : OUT Fin<10>, aux : AUX Fin<2>, aux_1 : AUX Fin<2>, aux_2 : AUX Fin<2>, aux_3 : AUX Fin<2>, aux_4 : AUX Fin<2>, aux_5 : AUX Fin<2>, aux_6 : AUX Fin<2>, aux_7 : AUX Fin<2>, aux_8 : AUX Fin<2>, aux_9 : AUX Fin<2>, aux_10 : AUX Fin<2>, aux_11 : AUX Fin<2>, aux_12 : AUX Fin<2>, aux_13 : AUX Fin<2>, aux_14 : AUX Fin<2>, aux_15 : AUX Fin<2>, aux_16 : AUX Fin<2>, aux_17 : AUX Fin<2>, aux_18 : AUX Fin<2>, aux_19 : AUX Fin<2>, aux_20 : AUX Fin<2>, aux_21 : AUX Fin<2>, aux_22 : AUX Fin<2>, aux_23 : AUX Fin<2>, ctrl : AUX Arr<62, Fin<2>>, pred_out : AUX Arr<62, Fin<2>>, n_iter : AUX Arr<62, Fin<3>>, s_arg : AUX Arr<62, Fin<10>>) { for (#run_ix in 0 .. < 62) { - n_iter[#run_ix] *= Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; pred_out[#run_ix] *= X; pred_out[#run_ix] *= H; - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; for (#LIM in 0 .. < 3) { n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; call CompletesTriangle_U(i, j, s_arg[#run_ix], aux_23, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22); ctrl[#run_ix], aux_23, pred_out[#run_ix] *= Toffoli; call-adj CompletesTriangle_U(i, j, s_arg[#run_ix], aux_23, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22); - s_arg[#run_ix] *= Adj-Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Adj-Unif; s_arg[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg[#run_ix] *= Distr[uniform : Fin<10>]; + s_arg[#run_ix] *= Unif; n_iter[#run_ix], ctrl[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out[#run_ix] *= H; pred_out[#run_ix] *= X; - n_iter[#run_ix] *= Adj-Distr[uniform : Fin<3>]; + n_iter[#run_ix] *= Unif; ctrl[#run_ix] *= X; call CompletesTriangle_U(i, j, s_arg[#run_ix], aux_23, aux, aux_1, aux_2, aux_3, aux_4, aux_5, aux_6, aux_7, aux_8, aux_9, aux_10, aux_11, aux_12, aux_13, aux_14, aux_15, aux_16, aux_17, aux_18, aux_19, aux_20, aux_21, aux_22); ctrl[#run_ix], aux_23, pred_out[#run_ix] *= Toffoli; @@ -89,12 +89,12 @@ uproc HasTriangleCycle_U(ij : IN Tup, Fin<10>>, result : OUT Fin<2>, i : uproc Grover[k](i : Fin<10>, j : Fin<10>, x : IN Fin<10>, ret_1 : OUT Fin<2>, aux_24 : AUX Fin<2>, aux_25 : AUX Fin<2>, aux_26 : AUX Fin<2>, aux_27 : AUX Fin<2>, aux_28 : AUX Fin<2>, aux_29 : AUX Fin<2>, aux_30 : AUX Fin<2>, aux_31 : AUX Fin<2>, aux_32 : AUX Fin<2>, aux_33 : AUX Fin<2>, aux_34 : AUX Fin<2>, aux_35 : AUX Fin<2>, aux_36 : AUX Fin<2>, aux_37 : AUX Fin<2>, aux_38 : AUX Fin<2>, aux_39 : AUX Fin<2>, aux_40 : AUX Fin<2>, aux_41 : AUX Fin<2>, aux_42 : AUX Fin<2>, aux_43 : AUX Fin<2>, aux_44 : AUX Fin<2>, aux_45 : AUX Fin<2>, aux_46 : AUX Fin<2>) { ret_1 *= X; ret_1 *= H; - x *= Distr[uniform : Fin<10>]; + x *= Unif; repeat (#k) { call CompletesTriangle_U(i, j, x, ret_1, aux_24, aux_25, aux_26, aux_27, aux_28, aux_29, aux_30, aux_31, aux_32, aux_33, aux_34, aux_35, aux_36, aux_37, aux_38, aux_39, aux_40, aux_41, aux_42, aux_43, aux_44, aux_45, aux_46); - x *= Adj-Distr[uniform : Fin<10>]; + x *= Adj-Unif; x *= PhaseOnZero(3.141592653589793); - x *= Distr[uniform : Fin<10>]; + x *= Unif; } ret_1 *= H; ret_1 *= X; @@ -128,23 +128,23 @@ proc HasTriangleCycle(ij : Tup, Fin<10>>, result : Fin<2>) { locals : (i uproc UAny_1(ret_2 : OUT Fin<2>, s_result_2 : OUT Tup, Fin<10>>, aux_47 : AUX Fin<10>, aux_48 : AUX Fin<10>, aux_49 : AUX Fin<2>, aux_50 : AUX Fin<2>, aux_51 : AUX Fin<10>, aux_52 : AUX Fin<10>, aux_53 : AUX Fin<2>, aux_54 : AUX Fin<2>, aux_55 : AUX Fin<10>, aux_56 : AUX Fin<2>, aux_57 : AUX Fin<2>, aux_58 : AUX Fin<2>, aux_59 : AUX Fin<2>, aux_60 : AUX Fin<2>, aux_61 : AUX Fin<2>, aux_62 : AUX Fin<2>, aux_63 : AUX Fin<2>, aux_64 : AUX Fin<2>, aux_65 : AUX Fin<2>, aux_66 : AUX Fin<2>, aux_67 : AUX Fin<2>, aux_68 : AUX Fin<2>, aux_69 : AUX Fin<2>, aux_70 : AUX Fin<2>, aux_71 : AUX Fin<2>, aux_72 : AUX Fin<2>, aux_73 : AUX Fin<2>, aux_74 : AUX Fin<2>, aux_75 : AUX Fin<2>, aux_76 : AUX Fin<2>, aux_77 : AUX Fin<2>, aux_78 : AUX Fin<2>, aux_79 : AUX Fin<2>, aux_80 : AUX Arr<62, Fin<2>>, aux_81 : AUX Arr<62, Fin<2>>, aux_82 : AUX Arr<62, Fin<3>>, aux_83 : AUX Arr<62, Fin<10>>, aux_84 : AUX Fin<10>, aux_85 : AUX Fin<2>, aux_86 : AUX Fin<2>, aux_87 : AUX Fin<2>, aux_88 : AUX Fin<2>, aux_89 : AUX Fin<2>, aux_90 : AUX Fin<2>, aux_91 : AUX Fin<2>, aux_92 : AUX Fin<2>, aux_93 : AUX Fin<2>, aux_94 : AUX Fin<2>, aux_95 : AUX Fin<2>, aux_96 : AUX Fin<2>, aux_97 : AUX Fin<2>, aux_98 : AUX Fin<2>, aux_99 : AUX Fin<2>, aux_100 : AUX Fin<2>, aux_101 : AUX Fin<2>, aux_102 : AUX Fin<2>, aux_103 : AUX Fin<2>, aux_104 : AUX Fin<2>, aux_105 : AUX Fin<2>, aux_106 : AUX Fin<2>, aux_107 : AUX Fin<2>, aux_108 : AUX Fin<2>, aux_109 : AUX Arr<62, Fin<2>>, aux_110 : AUX Arr<62, Fin<2>>, aux_111 : AUX Arr<62, Fin<3>>, aux_112 : AUX Arr<62, Fin<10>>, aux_113 : AUX Fin<2>, aux_114 : AUX Fin<2>, ctrl_1 : AUX Arr<16, Fin<2>>, pred_out_1 : AUX Arr<16, Fin<2>>, n_iter_1 : AUX Arr<16, Fin<8>>, s_arg_1 : AUX Arr<16, Tup, Fin<10>>>) { for (#run_ix in 0 .. < 16) { - n_iter_1[#run_ix] *= Distr[uniform : Fin<8>]; + n_iter_1[#run_ix] *= Unif; pred_out_1[#run_ix] *= X; pred_out_1[#run_ix] *= H; - s_arg_1[#run_ix] *= Distr[uniform : Tup, Fin<10>>]; + s_arg_1[#run_ix] *= Unif; for (#LIM in 0 .. < 8) { n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; call HasTriangleCycle_U(s_arg_1[#run_ix], aux_114, aux_47, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106, aux_107, aux_108, aux_109, aux_110, aux_111, aux_112, aux_113); ctrl_1[#run_ix], aux_114, pred_out_1[#run_ix] *= Toffoli; call-adj HasTriangleCycle_U(s_arg_1[#run_ix], aux_114, aux_47, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106, aux_107, aux_108, aux_109, aux_110, aux_111, aux_112, aux_113); - s_arg_1[#run_ix] *= Adj-Distr[uniform : Tup, Fin<10>>]; + s_arg_1[#run_ix] *= Adj-Unif; s_arg_1[#run_ix] *= PhaseOnZero(3.141592653589793); - s_arg_1[#run_ix] *= Distr[uniform : Tup, Fin<10>>]; + s_arg_1[#run_ix] *= Unif; n_iter_1[#run_ix], ctrl_1[#run_ix] *= Embed[(a) => (a <= #LIM)]; } pred_out_1[#run_ix] *= H; pred_out_1[#run_ix] *= X; - n_iter_1[#run_ix] *= Adj-Distr[uniform : Fin<8>]; + n_iter_1[#run_ix] *= Unif; ctrl_1[#run_ix] *= X; call HasTriangleCycle_U(s_arg_1[#run_ix], aux_114, aux_47, aux_48, aux_49, aux_50, aux_51, aux_52, aux_53, aux_54, aux_55, aux_56, aux_57, aux_58, aux_59, aux_60, aux_61, aux_62, aux_63, aux_64, aux_65, aux_66, aux_67, aux_68, aux_69, aux_70, aux_71, aux_72, aux_73, aux_74, aux_75, aux_76, aux_77, aux_78, aux_79, aux_80, aux_81, aux_82, aux_83, aux_84, aux_85, aux_86, aux_87, aux_88, aux_89, aux_90, aux_91, aux_92, aux_93, aux_94, aux_95, aux_96, aux_97, aux_98, aux_99, aux_100, aux_101, aux_102, aux_103, aux_104, aux_105, aux_106, aux_107, aux_108, aux_109, aux_110, aux_111, aux_112, aux_113); ctrl_1[#run_ix], aux_114, pred_out_1[#run_ix] *= Toffoli; @@ -163,12 +163,12 @@ uproc HasTriangle_U(found_triangle : OUT Fin<2>, found_triangle_1 : AUX Fin<2>, uproc Grover_1[k](x_1 : IN Tup, Fin<10>>, ret_3 : OUT Fin<2>, aux_115 : AUX Fin<10>, aux_116 : AUX Fin<10>, aux_117 : AUX Fin<2>, aux_118 : AUX Fin<2>, aux_119 : AUX Fin<10>, aux_120 : AUX Fin<10>, aux_121 : AUX Fin<2>, aux_122 : AUX Fin<2>, aux_123 : AUX Fin<10>, aux_124 : AUX Fin<2>, aux_125 : AUX Fin<2>, aux_126 : AUX Fin<2>, aux_127 : AUX Fin<2>, aux_128 : AUX Fin<2>, aux_129 : AUX Fin<2>, aux_130 : AUX Fin<2>, aux_131 : AUX Fin<2>, aux_132 : AUX Fin<2>, aux_133 : AUX Fin<2>, aux_134 : AUX Fin<2>, aux_135 : AUX Fin<2>, aux_136 : AUX Fin<2>, aux_137 : AUX Fin<2>, aux_138 : AUX Fin<2>, aux_139 : AUX Fin<2>, aux_140 : AUX Fin<2>, aux_141 : AUX Fin<2>, aux_142 : AUX Fin<2>, aux_143 : AUX Fin<2>, aux_144 : AUX Fin<2>, aux_145 : AUX Fin<2>, aux_146 : AUX Fin<2>, aux_147 : AUX Fin<2>, aux_148 : AUX Arr<62, Fin<2>>, aux_149 : AUX Arr<62, Fin<2>>, aux_150 : AUX Arr<62, Fin<3>>, aux_151 : AUX Arr<62, Fin<10>>, aux_152 : AUX Fin<10>, aux_153 : AUX Fin<2>, aux_154 : AUX Fin<2>, aux_155 : AUX Fin<2>, aux_156 : AUX Fin<2>, aux_157 : AUX Fin<2>, aux_158 : AUX Fin<2>, aux_159 : AUX Fin<2>, aux_160 : AUX Fin<2>, aux_161 : AUX Fin<2>, aux_162 : AUX Fin<2>, aux_163 : AUX Fin<2>, aux_164 : AUX Fin<2>, aux_165 : AUX Fin<2>, aux_166 : AUX Fin<2>, aux_167 : AUX Fin<2>, aux_168 : AUX Fin<2>, aux_169 : AUX Fin<2>, aux_170 : AUX Fin<2>, aux_171 : AUX Fin<2>, aux_172 : AUX Fin<2>, aux_173 : AUX Fin<2>, aux_174 : AUX Fin<2>, aux_175 : AUX Fin<2>, aux_176 : AUX Fin<2>, aux_177 : AUX Arr<62, Fin<2>>, aux_178 : AUX Arr<62, Fin<2>>, aux_179 : AUX Arr<62, Fin<3>>, aux_180 : AUX Arr<62, Fin<10>>, aux_181 : AUX Fin<2>) { ret_3 *= X; ret_3 *= H; - x_1 *= Distr[uniform : Tup, Fin<10>>]; + x_1 *= Unif; repeat (#k) { call HasTriangleCycle_U(x_1, ret_3, aux_115, aux_116, aux_117, aux_118, aux_119, aux_120, aux_121, aux_122, aux_123, aux_124, aux_125, aux_126, aux_127, aux_128, aux_129, aux_130, aux_131, aux_132, aux_133, aux_134, aux_135, aux_136, aux_137, aux_138, aux_139, aux_140, aux_141, aux_142, aux_143, aux_144, aux_145, aux_146, aux_147, aux_148, aux_149, aux_150, aux_151, aux_152, aux_153, aux_154, aux_155, aux_156, aux_157, aux_158, aux_159, aux_160, aux_161, aux_162, aux_163, aux_164, aux_165, aux_166, aux_167, aux_168, aux_169, aux_170, aux_171, aux_172, aux_173, aux_174, aux_175, aux_176, aux_177, aux_178, aux_179, aux_180, aux_181); - x_1 *= Adj-Distr[uniform : Tup, Fin<10>>]; + x_1 *= Adj-Unif; x_1 *= PhaseOnZero(3.141592653589793); - x_1 *= Distr[uniform : Tup, Fin<10>>]; + x_1 *= Unif; } ret_3 *= H; ret_3 *= X; diff --git a/examples/tree_generator/tree_generator_01_knapsack.qpl b/examples/tree_generator/tree_generator_01_knapsack.qpl index 1a3fb60..161aa1f 100644 --- a/examples/tree_generator/tree_generator_01_knapsack.qpl +++ b/examples/tree_generator/tree_generator_01_knapsack.qpl @@ -139,8 +139,7 @@ uproc TreeGen_U(xs : IN Arr<4, Fin<2>>, old_pr : IN Fin<1000>, ok : OUT Fin<2>, i_8, i *= SWAP; i, xs, xi_9 *= Embed[(i, xs) => xs[i]]; xi, xi_9 *= SWAP; - y_1 *= Distr[bernoulli[0.2]]; - y_1, y_1_1 *= COPY; + y_1, y_1_1 *= Distr[bernoulli[0.2]]; y, y_1 *= SWAP; xi, y, try_pick_1 *= Embed[(xi, y) => (xi ^ y)]; try_pick, try_pick_1 *= SWAP; @@ -169,8 +168,7 @@ uproc TreeGen_U(xs : IN Arr<4, Fin<2>>, old_pr : IN Fin<1000>, ok : OUT Fin<2>, i_9, i *= SWAP; i, xs, xi_10 *= Embed[(i, xs) => xs[i]]; xi, xi_10 *= SWAP; - y_2 *= Distr[bernoulli[0.2]]; - y_2, y_2_1 *= COPY; + y_2, y_2_1 *= Distr[bernoulli[0.2]]; y, y_2 *= SWAP; xi, y, try_pick_2 *= Embed[(xi, y) => (xi ^ y)]; try_pick, try_pick_2 *= SWAP; @@ -199,8 +197,7 @@ uproc TreeGen_U(xs : IN Arr<4, Fin<2>>, old_pr : IN Fin<1000>, ok : OUT Fin<2>, i_10, i *= SWAP; i, xs, xi_11 *= Embed[(i, xs) => xs[i]]; xi, xi_11 *= SWAP; - y_3 *= Distr[bernoulli[0.2]]; - y_3, y_3_1 *= COPY; + y_3, y_3_1 *= Distr[bernoulli[0.2]]; y, y_3 *= SWAP; xi, y, try_pick_3 *= Embed[(xi, y) => (xi ^ y)]; try_pick, try_pick_3 *= SWAP; @@ -229,8 +226,7 @@ uproc TreeGen_U(xs : IN Arr<4, Fin<2>>, old_pr : IN Fin<1000>, ok : OUT Fin<2>, i_11, i *= SWAP; i, xs, xi_12 *= Embed[(i, xs) => xs[i]]; xi, xi_12 *= SWAP; - y_4 *= Distr[bernoulli[0.2]]; - y_4, y_4_1 *= COPY; + y_4, y_4_1 *= Distr[bernoulli[0.2]]; y, y_4 *= SWAP; xi, y, try_pick_4 *= Embed[(xi, y) => (xi ^ y)]; try_pick, try_pick_4 *= SWAP;