/* https://stackoverflow.com/questions/76461406/does-picat-support-program-synthesis """ Does Picat support Program Synthesis? Can I define a program synthesis task in Picat, similar to this definition in SyGuS format? (set-logic LIA) (synth-fun f ((color Int) (sortAsc Int) (sortDesc Int)) Int ((I Int) (B Bool)) ((I Int (color sortAsc sortDesc 0 1 2 3 4 (ite B I I))) (B Bool ((<= I I) (= I I)))) ) (declare-var color Int) (declare-var sortAsc Int) (declare-var sortDesc Int) (constraint (= (f 1 2 2) 0)) (constraint (= (f 1 4 0) 2)) (constraint (= (f 1 1 3) 0)) (constraint (= (f 1 3 1) 0)) (constraint (= (f 1 0 4) 3)) (constraint (= (f 1 2 1) 0)) (constraint (= (f 1 0 3) 3)) (constraint (= (f 1 3 0) 2)) (constraint (= (f 1 1 2) 0)) (check-synth) """ * Using Ops = [if_less,if_then_else], Constants = 0..3, and num_gens=100 generates the following solutions, all has the result of (1,2,3) = 0 AllGood: [program = if_less(0,C,if_less(B,A,3,0),2),res = 0,count = 60] [program = if_then_else(if_then_else(1,if_less(1,C,B,1),C),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 52] [program = if_then_else(if_then_else(if_then_else(C,if_less(3,0,0,0),3),C,if_less(0,C,B,1)),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 51] [program = if_less(0,if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 41] [program = if_then_else(if_less(A,if_less(2,3,B,B),A,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 38] [program = if_less(0,if_then_else(C,2,C),if_less(B,A,3,0),2),res = 0,count = 37] [program = if_less(0,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),2),res = 0,count = 37] [program = if_less(0,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 34] [program = if_less(0,if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),2),res = 0,count = 31] [program = if_less(0,if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 29] [program = if_less(0,C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 29] [program = if_less(0,if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),2),res = 0,count = 28] [program = if_less(0,if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 25] [program = if_less(A,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),2),res = 0,count = 22] [program = if_less(0,C,if_less(B,A,3,0),if_then_else(B,C,2)),res = 0,count = 22] [program = if_less(0,if_then_else(3,1,C),if_less(B,A,3,0),2),res = 0,count = 18] [program = if_less(C,if_less(C,3,1,0),if_less(if_less(A,B,1,3),3,2,C),if_less(B,A,3,0)),res = 0,count = 16] [program = if_less(1,if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 16] [program = if_less(C,if_then_else(A,A,B),if_less(if_less(A,B,1,3),3,2,C),if_less(B,A,3,0)),res = 0,count = 13] [program = if_less(B,1,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 11] [program = if_less(0,if_then_else(3,1,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 11] [program = if_less(0,if_then_else(0,B,B),if_then_else(if_less(0,C,0,A),2,0),3),res = 0,count = 11] [program = if_less(if_less(0,if_less(if_less(B,2,0,3),C,A,0),1,2),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 9] [program = if_less(1,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 9] [program = if_less(if_then_else(if_then_else(0,if_then_else(B,3,C),C),0,1),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 8] [program = if_less(if_then_else(A,B,if_then_else(1,C,C)),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 8] [program = if_less(if_less(A,if_then_else(0,B,A),if_less(0,B,3,B),2),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 7] [program = if_less(if_then_else(C,1,B),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 7] [program = if_less(0,if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 7] [program = if_less(if_then_else(C,1,B),A,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 6] [program = if_less(if_then_else(C,1,B),1,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 6] [program = if_less(C,if_then_else(A,A,B),if_then_else(B,3,2),if_less(B,A,3,0)),res = 0,count = 5] [program = if_then_else(if_less(A,B,A,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 5] [program = if_less(if_less(B,if_less(0,B,B,A),B,C),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(if_then_else(C,1,B),1,if_less(2,0,1,3),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(if_then_else(A,B,if_then_else(1,C,C)),3,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(C,if_less(2,if_less(3,2,3,C),A,1),if_less(if_less(A,B,1,3),3,2,C),if_less(B,A,3,0)),res = 0,count = 4] [program = if_less(C,1,if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 4] [program = if_less(B,C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(B,A,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(A,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(A,if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(1,if_less(1,3,B,A),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 4] [program = if_less(1,if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 4] [program = if_less(0,if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 4] [program = if_less(0,if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),2),res = 0,count = 4] [program = if_less(if_less(B,if_less(0,B,B,A),B,C),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),1,if_less(B,A,3,0),2),res = 0,count = 3] [program = if_less(if_then_else(C,3,if_less(3,2,B,0)),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(if_then_else(C,1,B),if_less(3,0,B,2),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(if_then_else(C,1,B),2,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(C,A,if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 3] [program = if_less(B,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(1,if_less(if_then_else(if_less(0,1,0,1),if_less(3,A,0,0),B),2,if_then_else(B,B,3),if_then_else(A,1,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(1,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(1,if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 3] [program = if_less(0,C,if_less(B,A,3,0),if_less(A,1,B,2)),res = 0,count = 3] [program = if_less(if_less(C,2,if_less(1,C,3,B),if_then_else(A,B,C)),3,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(if_less(A,A,A,0),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(if_less(0,if_less(if_less(B,2,0,3),C,A,0),1,2),2,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_less(if_less(2,A,C,A),A,B,3),B,2),if_less(B,A,3,0),2),res = 0,count = 2] [program = if_less(if_then_else(if_then_else(C,if_less(3,0,0,0),3),C,if_less(0,C,B,1)),if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(if_then_else(if_then_else(C,B,3),B,C),if_then_else(A,A,B),if_then_else(B,3,2),if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(if_then_else(C,if_less(A,B,0,1),if_less(1,A,B,1)),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(if_then_else(C,2,C),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(if_then_else(C,1,B),if_then_else(A,A,B),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(if_then_else(3,3,if_less(3,C,3,C)),A,2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(C,if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(C,if_then_else(1,if_then_else(B,3,B),2),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(C,A,2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(A,if_less(1,3,B,A),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(A,if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 2] [program = if_less(2,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 2] [program = if_less(1,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),2),res = 0,count = 2] [program = if_less(if_less(if_less(if_less(A,B,C,1),2,3,0),A,if_then_else(1,A,2),A),if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_less(if_less(C,if_then_else(1,C,1),B,C),C,if_then_else(A,A,B),0),C,if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_less(if_then_else(if_less(B,A,A,0),C,3),A,0,C),if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(if_then_else(if_less(B,A,A,0),C,3),A,0,C),3,if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(if_then_else(if_then_else(3,C,2),if_then_else(2,B,3),2),if_less(C,B,2,C),1,C),if_less(3,A,0,if_less(3,C,1,1)),if_less(3,if_less(C,B,2,C),C,2),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(C,A,1,1),if_then_else(if_less(0,C,0,A),2,0),if_then_else(1,2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(C,A,1,1),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(C,0,B,2),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),if_less(if_less(0,A,C,0),if_then_else(2,2,0),0,A),if_then_else(if_less(0,C,0,A),2,0),3),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0),if_then_else(B,3,2),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),if_then_else(if_then_else(A,C,1),A,B),if_then_else(if_less(0,C,0,A),2,0),3),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),B,if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_then_else(if_then_else(1,1,B),C,0),3,3)),res = 0,count = 1] [program = if_less(if_less(B,A,3,0),3,if_then_else(if_less(0,C,0,A),2,0),3),res = 0,count = 1] [program = if_less(if_less(B,3,B,3),1,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(A,if_less(2,3,B,B),A,0),if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(A,A,A,0),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(A,2,1,2),if_less(B,A,3,0),3,if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(A,2,0,0),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(A,1,B,2),if_then_else(0,B,B),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(3,A,0,if_less(3,C,1,1)),if_then_else(C,2,C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_less(2,if_less(3,2,3,C),A,1),if_less(1,3,B,A),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(2,3,A,B),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(2,2,A,2),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(1,if_less(1,0,C,0),C,B),A,3,if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(1,3,B,A),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(1,3,B,A),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(1,3,B,A),2,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(1,2,1,C),if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_less(0,B,2,B),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_less(0,B,2,B),if_then_else(A,A,B),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(if_then_else(A,2,C),C,B,3),A,0),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_less(if_then_else(if_less(2,1,3,C),1,2),if_then_else(if_less(1,C,1,C),3,3),if_then_else(C,3,C),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0),3,if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_less(A,2,1,2),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_less(1,3,B,A),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(A,A,A),if_less(B,A,3,0),if_then_else(B,C,2)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(A,A,3),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),if_then_else(0,B,B),if_then_else(if_less(0,C,0,A),2,0),3),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),C,if_less(B,A,3,0),if_then_else(B,C,2)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),A,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0),if_less(3,if_less(C,B,2,C),C,2)),res = 0,count = 1] [program = if_less(if_then_else(if_less(0,C,0,A),2,0),1,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(if_then_else(if_then_else(1,C,C),C,A),1,if_then_else(3,C,1)),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(C,3,if_less(3,2,B,0)),if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(C,3,if_then_else(C,2,C)),if_less(C,A,1,1),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(C,2,C),if_then_else(if_less(0,C,0,A),2,0),if_then_else(B,C,2),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(C,0,A),C,if_less(B,A,3,0),if_then_else(1,2,0)),res = 0,count = 1] [program = if_less(if_then_else(B,C,2),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(B,B,C),2,if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(A,if_then_else(1,A,1),if_less(C,1,B,2)),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(A,B,if_then_else(1,C,C)),if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(A,B,if_then_else(1,C,C)),C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(A,A,B),if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(A,A,B),if_then_else(if_less(0,C,0,A),2,0),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(if_then_else(A,A,B),if_then_else(C,2,C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_then_else(A,A,A),if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(A,A,A),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(3,C,B),if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(3,C,B),if_less(B,A,3,0),3,if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(3,C,0),if_then_else(C,B,C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_then_else(3,1,A),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(1,0,A),if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(if_then_else(0,B,B),if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(0,B,B),if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(if_then_else(0,B,B),A,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(C,if_less(3,A,0,if_less(3,C,1,1)),2,if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(C,if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(C,if_then_else(A,A,A),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(C,A,if_less(2,A,B,2),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(C,3,if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(B,if_less(if_then_else(if_then_else(A,0,1),B,3),if_then_else(if_less(2,0,C,B),1,1),B,if_then_else(C,A,1)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_less(if_then_else(A,A,3),0,A,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_less(C,0,B,2),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_less(3,0,2,1),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_less(2,3,A,B),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,if_then_else(C,if_then_else(A,C,0),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(B,2,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_less(B,A,3,0),if_less(if_less(C,B,A,A),0,B,3),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_less(2,A,if_less(B,B,A,2),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_then_else(if_less(C,A,0,B),if_then_else(if_then_else(3,1,B),2,C),if_less(0,2,B,1)),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(A,if_then_else(if_then_else(C,B,3),B,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_then_else(B,C,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,if_then_else(3,3,if_less(3,C,3,C)),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(A,C,if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(2,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(2,if_less(if_then_else(B,1,C),A,A,3),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(2,if_less(B,A,3,0),if_then_else(B,A,3),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(2,if_then_else(3,1,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(1,if_less(B,A,3,0),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(1,if_less(2,B,1,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(1,if_then_else(if_then_else(if_less(A,1,1,C),1,C),if_less(if_less(0,A,3,B),A,C,3),C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(1,if_then_else(if_then_else(B,2,B),3,C),if_less(B,A,3,0),if_then_else(if_less(0,C,0,A),2,0)),res = 0,count = 1] [program = if_less(1,if_then_else(C,2,C),if_less(B,A,3,0),2),res = 0,count = 1] [program = if_less(1,if_then_else(C,1,B),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(0,if_then_else(if_less(C,if_less(B,A,0,A),0,B),2,if_less(1,B,C,2)),if_less(B,A,3,0),if_then_else(C,B,2)),res = 0,count = 1] [program = if_less(0,if_then_else(if_less(0,C,0,A),2,0),if_then_else(if_less(0,C,0,A),2,0),if_less(B,A,3,0)),res = 0,count = 1] [program = if_less(0,if_then_else(C,2,C),if_less(B,A,3,0),if_less(2,2,A,2)),res = 0,count = 1] resultMap = [0 = 178] */ data(program_synthesis,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[1,2,2],0], [[1,4,0],2], [[1,1,3],0], [[1,3,1],0], [[1,0,4],3], [[1,2,1],0], [[1,0,3],3], [[1,3,0],2], [[1,1,2],0] ], Ops = [if_less,if_then_else], Constants = 0..3, Vars = ['A','B','C'], Unknown = [1,2,3], % Testing all the inputs yield the correct output % Unknown = [1,2,2], % -> 0 % Unknown = [1,4,0], % -> 2 % Unknown = [1,1,3], % -> 0 % Unknown = [1,3,1], % -> 0 % Unknown = [1,0,4], % -> 3 % Unknown = [1,2,1], % -> 0 % Unknown = [1,0,3], % -> 3 % Unknown = [1,3,0], % -> 2 % Unknown = [1,1,2], % -> 0 MaxSize = 6, Params = new_map([num_gens=100]). % Testing one of the solutions: if_less(0,B * C,0,if_less(B,A,3,2)) % if 0 < B * C then % println(0) % elseif B < A then % println(3) % else % println(2) % end, % nl. % Using cond/3 is better for this... % Here's the output: % [input = [1,2,2],expected = 0,out = 0,verdict = ok] % [input = [1,4,0],expected = 2,out = 2,verdict = ok] % [input = [1,1,3],expected = 0,out = 0,verdict = ok] % [input = [1,3,1],expected = 0,out = 0,verdict = ok] % [input = [1,0,4],expected = 3,out = 3,verdict = ok] % [input = [1,2,1],expected = 0,out = 0,verdict = ok] % [input = [1,0,3],expected = 3,out = 3,verdict = ok] % [input = [1,3,0],expected = 2,out = 2,verdict = ok] % [input = [1,1,2],expected = 0,out = 0,verdict = ok] test => Data = [ [[1,2,2],0], [[1,4,0],2], [[1,1,3],0], [[1,3,1],0], [[1,0,4],3], [[1,2,1],0], [[1,0,3],3], [[1,3,0],2], [[1,1,2],0] ], foreach([[A,B,C], Res] in Data) Out = cond(0 < B * C, 0, cond(B < A, 3, 2)), if Res == Out then Verdict = ok else Verdict = not_ok end, println([input=[A,B,C], expected=Res,out=Out,verdict=Verdict]), end, nl.