Specific to General
0. T=[small,red,ball]+ S=[[small,red,ball]] N = [] 1. T=[large,blue,ball]+ S=[[X,Y,ball]] N = [] % Generalize S to match [large,blue,ball] 2. T=[small,red,cube]- S=[[X,Y,ball]] N=[[small,red,cube]] 3. T=[large,white,brick]- S=[[X,Y,ball]] N=[[small,red,cube],[large,white,brick]] 4. T=[small,white,brick]- S=[[X,Y,ball]] N=[[small,red,cube],[large,white,brick],[small,white,brick]] 5. T=[small,white,ball]+ S=[[X,Y,ball]] N=[[small,red,cube],[large,white,brick],[small,white,brick]] It's a ball!
General to Specific
0. G=[[X,Y,Z]] P = []
1. T=[small,red,ball]+ G=[[X,Y,Z]] P = [[small,red,ball]]
2. T=[large,blue,ball]+ G=[[X,Y,Z]] P = [[small,red,ball],[large,blue,ball]]
3. T=[small,red,cube]- G=[[large,Y,Z],
[X,blue,Z],
[X,white,Z], %% Delete: doesn't match any positives
[X,Y,ball]
[X,Y,brick]] %% Delete: doesn't match any positives
4. T=[large,white,brick]- G=[[large,red,Z], %% Delete: doesn't match any positives
[large,blue,Z],%% Delete: more specific than [X,blue,Z]
[X,blue,Z],
[X,Y,ball]]
5. T=[small,white,brick]- G=[[X,blue,Z], %% No change
[X,Y,ball]]
6. T=[small,white,ball]+ G=[[X,blue,Z], %% Delete: doesn't match [small,white,ball]
[X,Y,ball]] P = [[small,red,ball],[large,blue,ball],[small,white,ball]]
7. G=[[X,Y,ball]]
It's a ball!
Try these two examples using the PROLOG program PROLOG Version Space Search. To run the first example, load the program into PROLOG and type do_spec_to_gen. For the second example, type do_gen_to_spec.