/* Logic example from Ruby/GP sample/logic.rb http://www31.tok2.com/home/akimichi/aki/program/gp/ fitness_cases.set_inputs("P",[true,true,true,true,false,false,false,false]) fitness_cases.set_inputs("Q",[true,true,false,false,true,true,false,false]) fitness_cases.set_inputs("R",[true,false,true,false,true,false,true,false]) fitness_cases.set_outputs([false,true,false,true,false,true,false,false]) * init_size=1000, num_gens=100 [program = and(not R,not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 75] [program = and(not R,or(P,or(0,and(Q,Q)))),res = 0,count = 72] [program = and(not R,or(P,Q)),res = 0,count = 62] [program = and(not <=>(or(<=>(0,P),Q),not Q),not R),res = 0,count = 61] [program = and(not <=>(or(<=>(0,P),Q),not Q),not and(R,1)),res = 0,count = 60] [program = and(not <=>(or(<=>(0,P),Q),not Q),not or(R,0)),res = 0,count = 54] [program = and(not <=>(or(<=>(0,P),Q),not Q),not and(or(=>(<=>(0,1),0),1),R)),res = 0,count = 53] [program = and(not <=>(or(<=>(0,P),Q),not Q),not and(1,R)),res = 0,count = 53] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(0,R)),res = 0,count = 46] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(0,<=>(1,R))),res = 0,count = 39] [program = and(or(P,or(0,and(Q,Q))),not and(R,1)),res = 0,count = 34] [program = and(or(P,or(0,and(Q,Q))),not R),res = 0,count = 34] [program = and(not or(R,0),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 34] [program = and(not and(R,1),or(P,or(0,and(Q,Q)))),res = 0,count = 29] [program = and(not and(R,1),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 29] [program = and(not R,and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 29] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(R,0)),res = 0,count = 27] [program = and(not <=>(or(<=>(0,P),Q),not Q),not and(R,R)),res = 0,count = 27] [program = and(or(P,or(0,and(Q,Q))),<=>(R,0)),res = 0,count = 26] [program = and(not or(R,0),or(P,or(0,and(Q,Q)))),res = 0,count = 25] [program = and(<=>(0,R),or(P,or(0,and(Q,Q)))),res = 0,count = 24] [program = and(or(P,or(0,and(Q,Q))),not or(R,0)),res = 0,count = 23] [program = and(not and(1,R),or(P,or(0,and(Q,Q)))),res = 0,count = 23] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(0,<=>(1,and(1,R)))),res = 0,count = 23] [program = and(not and(or(=>(<=>(0,1),0),1),R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 22] [program = and(<=>(0,R),or(P,Q)),res = 0,count = 21] [program = and(<=>(0,R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 21] [program = and(not and(1,R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 21] [program = and(or(P,or(0,and(Q,Q))),not and(1,R)),res = 0,count = 20] [program = and(<=>(R,0),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 18] [program = and(not R,or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 18] [program = and(<=>(and(0,and(Q,R)),R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 17] [program = and(not and(1,R),or(P,Q)),res = 0,count = 17] [program = and(or(P,or(0,and(Q,Q))),<=>(0,R)),res = 0,count = 16] [program = and(or(P,Q),not R),res = 0,count = 16] [program = and(<=>(R,0),or(P,or(0,and(Q,Q)))),res = 0,count = 15] [program = and(<=>(0,<=>(1,R)),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 15] [program = and(or(P,or(0,and(Q,Q))),<=>(0,<=>(1,R))),res = 0,count = 14] [program = and(or(P,or(0,and(Q,Q))),not and(or(=>(<=>(0,1),0),1),R)),res = 0,count = 14] [program = and(or(P,Q),not and(1,R)),res = 0,count = 13] [program = and(not and(or(=>(<=>(0,1),0),1),R),or(P,or(0,and(Q,Q)))),res = 0,count = 13] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(not R,1)),res = 0,count = 13] [program = and(or(P,Q),<=>(0,R)),res = 0,count = 12] [program = and(or(P,Q),not or(R,0)),res = 0,count = 12] [program = and(<=>(and(0,and(Q,R)),R),or(P,or(0,and(Q,Q)))),res = 0,count = 12] [program = and(not and(R,R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 12] [program = and(or(P,or(0,and(Q,Q))),<=>(and(0,and(Q,R)),R)),res = 0,count = 11] [program = and(<=>(not R,1),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 11] [program = and(<=>(0,<=>(1,and(1,R))),or(P,or(0,and(Q,Q)))),res = 0,count = 11] [program = and(<=>(0,<=>(1,and(1,R))),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 11] [program = and(<=>(0,<=>(1,R)),or(P,or(0,and(Q,Q)))),res = 0,count = 11] [program = and(not and(R,1),or(P,Q)),res = 0,count = 11] [program = and(<=>(R,and(R,0)),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 10] [program = and(or(P,or(0,and(Q,Q))),<=>(R,and(R,0))),res = 0,count = 9] [program = and(or(P,or(0,and(Q,Q))),<=>(0,<=>(1,and(1,R)))),res = 0,count = 9] [program = and(or(P,or(0,and(Q,Q))),not and(R,R)),res = 0,count = 9] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(and(0,and(Q,R)),R)),res = 0,count = 9] [program = and(or(P,Q),<=>(0,<=>(1,R))),res = 0,count = 8] [program = and(or(P,Q),not and(R,1)),res = 0,count = 8] [program = and(and(or(1,P),not or(R,R)),or(P,or(0,and(Q,Q)))),res = 0,count = 8] [program = and(<=>(R,0),or(P,Q)),res = 0,count = 8] [program = and(not or(R,0),or(P,Q)),res = 0,count = 8] [program = and(or(P,or(0,and(Q,Q))),and(or(1,P),not or(R,R))),res = 0,count = 7] [program = and(or(P,or(0,and(Q,Q))),<=>(not R,1)),res = 0,count = 7] [program = and(or(P,Q),not and(or(=>(<=>(0,1),0),1),R)),res = 0,count = 7] [program = and(and(or(1,P),not or(R,R)),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 7] [program = and(<=>(and(0,and(Q,R)),R),or(P,Q)),res = 0,count = 7] [program = and(<=>(not R,1),or(P,or(0,and(Q,Q)))),res = 0,count = 7] [program = and(<=>(0,<=>(1,R)),or(P,Q)),res = 0,count = 7] [program = and(not and(or(=>(<=>(0,1),0),1),R),or(P,Q)),res = 0,count = 6] [program = and(not and(R,1),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 6] [program = and(not <=>(or(<=>(0,P),Q),not Q),and(or(1,P),not or(R,R))),res = 0,count = 6] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(R,and(R,0))),res = 0,count = 6] [program = and(or(P,Q),<=>(not R,1)),res = 0,count = 5] [program = and(or(P,Q),<=>(R,0)),res = 0,count = 5] [program = and(or(P,Q),<=>(0,<=>(1,and(1,R)))),res = 0,count = 5] [program = and(<=>(R,and(R,0)),or(P,Q)),res = 0,count = 5] [program = and(<=>(0,<=>(1,and(1,R))),or(P,Q)),res = 0,count = 5] [program = and(not and(R,R),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 5] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(0,<=>(1,R))),res = 0,count = 4] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),not and(R,1)),res = 0,count = 4] [program = and(<=>(and(0,and(Q,R)),R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 4] [program = and(<=>(not R,1),or(P,Q)),res = 0,count = 4] [program = and(<=>(R,0),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 4] [program = and(not and(R,R),or(P,or(0,and(Q,Q)))),res = 0,count = 4] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(=>(1,R),not R)),res = 0,count = 4] [program = and(or(Q,or(P,and(and(0,Q),0))),or(0,not R)),res = 0,count = 3] [program = and(or(Q,or(P,and(and(0,Q),0))),not or(R,0)),res = 0,count = 3] [program = and(or(Q,or(P,and(and(0,Q),0))),not and(R,1)),res = 0,count = 3] [program = and(or(Q,or(P,and(and(0,Q),0))),not and(1,R)),res = 0,count = 3] [program = and(or(Q,or(P,and(and(0,Q),0))),not R),res = 0,count = 3] [program = and(or(P,Q),<=>(and(0,and(Q,R)),R)),res = 0,count = 3] [program = and(or(P,Q),<=>(R,and(R,0))),res = 0,count = 3] [program = and(and(or(1,P),not or(R,R)),or(P,Q)),res = 0,count = 3] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),<=>(0,<=>(1,and(1,R)))),res = 0,count = 3] [program = and(<=>(=>(1,R),not R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 3] [program = and(<=>(R,and(R,0)),or(P,or(0,and(Q,Q)))),res = 0,count = 3] [program = and(<=>(0,R),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 3] [program = and(<=>(0,R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 3] [program = and(not and(1,R),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 3] [program = and(not R,not (not or(not (not Q),P))),res = 0,count = 3] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(and(0,and(Q,R)),R)),res = 0,count = 2] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(=>(1,R),not R)),res = 0,count = 2] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(0,<=>(1,and(1,R)))),res = 0,count = 2] [program = and(or(P,or(0,and(Q,Q))),or(0,not R)),res = 0,count = 2] [program = and(or(P,Q),and(or(1,P),not or(R,R))),res = 0,count = 2] [program = and(or(P,Q),not and(R,R)),res = 0,count = 2] [program = and(or(0,not R),or(P,Q)),res = 0,count = 2] [program = and(or(0,not R),not <=>(or(<=>(0,P),Q),not Q)),res = 0,count = 2] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),<=>(=>(1,R),not R)),res = 0,count = 2] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),<=>(0,<=>(1,R))),res = 0,count = 2] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),not R),res = 0,count = 2] [program = and(and(1,<=>(R,and(0,1))),or(P,Q)),res = 0,count = 2] [program = and(<=>(or(Q,P),1),not and(R,R)),res = 0,count = 2] [program = and(<=>(=>(1,R),not R),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 2] [program = and(<=>(0,<=>(1,and(1,R))),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 2] [program = and(<=>(0,<=>(1,R)),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 2] [program = and(not and(R,R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 2] [program = and(not <=>(or(<=>(0,P),Q),not Q),or(0,not R)),res = 0,count = 2] [program = and(not <=>(or(<=>(0,P),Q),not Q),and(1,<=>(R,and(0,1)))),res = 0,count = 2] [program = or(0,not or(and(<=>(<=>(P,1),R),<=>(Q,0)),R)),res = 0,count = 1] [program = and(or(or(Q,and(0,1)),P),not R),res = 0,count = 1] [program = and(or(or(Q,Q),and(1,P)),<=>(and(0,and(Q,R)),R)),res = 0,count = 1] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(<=>(and(not 0,1),R),0)),res = 0,count = 1] [program = and(or(Q,or(P,and(and(0,Q),0))),<=>(R,0)),res = 0,count = 1] [program = and(or(Q,or(P,and(and(0,Q),0))),not and(R,R)),res = 0,count = 1] [program = and(or(P,or(0,and(Q,Q))),<=>(=>(1,R),not R)),res = 0,count = 1] [program = and(or(P,Q),and(1,<=>(R,and(0,1)))),res = 0,count = 1] [program = and(or(0,not R),or(P,or(0,and(Q,Q)))),res = 0,count = 1] [program = and(or(0,not R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 1] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),not or(R,R)),res = 0,count = 1] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),not and(or(=>(<=>(0,1),0),1),R)),res = 0,count = 1] [program = and(and(=>(not and(1,1),0),or(Q,or(Q,P))),not and(R,R)),res = 0,count = 1] [program = and(<=>(or(Q,P),or(P,1)),not R),res = 0,count = 1] [program = and(<=>(and(0,and(Q,R)),R),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 1] [program = and(<=>(=>(1,R),not R),or(P,or(0,and(Q,Q)))),res = 0,count = 1] [program = and(<=>(=>(1,R),not R),or(P,Q)),res = 0,count = 1] [program = and(<=>(=>(1,R),not R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 1] [program = and(<=>(not and(R,R),1),or(P,Q)),res = 0,count = 1] [program = and(<=>(not R,1),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 1] [program = and(<=>(R,0),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 1] [program = and(<=>(0,<=>(1,and(1,R))),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 1] [program = and(not or(R,R),or(P,or(0,and(Q,Q)))),res = 0,count = 1] [program = and(not or(R,0),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 1] [program = and(not and(or(=>(<=>(0,1),0),1),R),and(=>(not and(1,1),0),or(Q,or(Q,P)))),res = 0,count = 1] [program = and(not and(R,1),or(Q,or(P,and(and(0,Q),0)))),res = 0,count = 1] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(not R,not (not 1))),res = 0,count = 1] [program = and(not <=>(or(<=>(0,P),Q),not Q),<=>(R,and(0,<=>(or(0,Q),0)))),res = 0,count = 1] resultMap = [0 = 148] * Just or, not [program = not or(not or(Q,or(not 1,P)),R),res = 0,count = 87] [program = not or(not or(not (not Q),P),R),res = 0,count = 69] [program = not or(R,not (not (not or(Q,P)))),res = 0,count = 51] [program = not or(R,not or(P,Q)),res = 0,count = 42] resultMap = [0 = 4] * Just and, not [program = and(not and(and(and(not Q,1),not (not 1)),and(and(1,1),not P)),not and(R,R)),res = 0,count = 1] resultMap = [0 = 1] * Just <=>, or [program = <=>(0,or(<=>(0,or(P,or(or(R,Q),0))),R)),res = 0,count = 90] [program = <=>(<=>(0,<=>(or(1,Q),R)),<=>(or(R,or(or(or(Q,P),Q),or(P,R))),1)),res = 0,count = 84] [program = <=>(<=>(0,R),<=>(or(R,or(or(or(Q,P),Q),or(P,R))),1)),res = 0,count = 84] [program = <=>(<=>(0,R),or(Q,or(<=>(<=>(<=>(0,1),or(P,R)),P),P))),res = 0,count = 83] [program = <=>(<=>(0,1),or(<=>(0,or(P,or(or(R,Q),0))),R)),res = 0,count = 74] [program = <=>(<=>(0,R),or(<=>(R,<=>(or(<=>(Q,R),R),1)),P)),res = 0,count = 72] [program = <=>(<=>(0,<=>(or(1,Q),R)),or(Q,or(<=>(<=>(<=>(0,1),or(P,R)),P),P))),res = 0,count = 66] [program = <=>(<=>(or(R,or(or(or(Q,P),Q),or(P,R))),1),<=>(0,R)),res = 0,count = 49] ... Cf logic.conf which generates a lot of solutions, e.g. !(R <=> (R || (Q || P))) [3] (!R) <=> ((R || P) || Q) [1] (!R) <=> (((R || P) || P) || Q) [4] !(R <=> (R || ((Q -> P) <=> P))) [261] !((R || P) <=> (R || (!(Q -> P)))) [1] !((R || ((Q -> P) <=> P)) <=> (R || R)) [1] */ data(kepler,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[1,1,1],0], [[1,1,0],1], [[1,0,1],0], [[1,0,0],1], [[0,1,1],0], [[0,1,0],1], [[0,0,1],0], [[0,0,0],0] ], Unknown = [0,0,0], Vars = ['P','Q','R'], Ops = [and,or,=>,<=>,not], % Ops = [or,<=>], Constants = 0..1, MaxSize = 11, Params = new_map([init_size=1000, show_best=1, % show_instances=true, num_gens=10 ]).