/* Pochhammer From Maple: > convert(pochhammer(n,2),factorial); (n + 1)! -------- (n - 1)! > [seq(%,n=1..10)]; [2, 6, 12, 20, 30, 42, 56, 72, 90, 110] > IdentifySequence(%,x); (x + 1) x Using make_point_seq, data is: [[[1],2],[[2],6],[[3],12],[[4],20],[[5],30],[[6],42],[[7],56],[[8],72],[[9],90],[[10],110]] [program = (A + 1) * A,res = 132,count = 99] [program = A * A + A,res = 132,count = 97] [program = A + A * A,res = 132,count = 96] [program = A * (1 + A),res = 132,count = 70] [program = A * (A + 1),res = 132,count = 59] [program = (1 + A) * A,res = 132,count = 57] Trying make_seq, i.e. as a recursion [[[2],6],[[6],12],[[12],20],[[20],30],[[30],42],[[42],56],[[56],72],[[72],90],[[90],110]] make_seq(Seq,1,Data,Unknown,Vars) does not give any solution. But with two variables it works: data: [[[2,6],12],[[6,12],20],[[12,20],30],[[20,30],42],[[30,42],56],[[42,56],72],[[56,72],90],[[72,90],110]] make_seq(Seq,2,Data,Unknown,Vars) gives [program = 2 - A + (B + B),res = 132,count = 54] [program = B + B - (A - 2),res = 132,count = 35] [program = 2 + B + (B - A),res = 132,count = 53] [program = B - A + (2 + B),res = 132,count = 45] And with 3 variables: make_seq(Seq,3,Data,Unknown,Vars) [[[2,6,12],20],[[6,12,20],30],[[12,20,30],42],[[20,30,42],56],[[30,42,56],72],[[42,56,72],90],[[56,72,90],110]] [program = C - A + (B + 4),res = 132,count = 76] [program = C + B - A + 4,res = 132,count = 60] [program = 2 * (C + 1) - B,res = 132,count = 51] [program = 4 + (C + B - A),res = 132,count = 47] [program = C + C - (B - 2),res = 132,count = 36] [program = C - (B - (A / A - (4 - 5 - C))) * 1,res = 132.0,count = 7] */ data(pochhammer,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Seq = [2, 6, 12, 20, 30, 42, 56, 72, 90, 110], Ops = [+,-,*,/], % make_point_seq(Seq,Data,Unknown,Vars), make_seq(Seq,3,Data,Unknown,Vars), % recursion Constants = 1..10, % ++ [random(-10,10) : _ in 1..10], MaxSize = 51, Params = new_map([init_size=1000, num_gens=100]).