:- import set_unify/2 from set_unify. :- import numbervars/1 from num_vars. :- import normalize_result/2 from can_mono. test :- tp, fail. test :- writeln('=========== Result is ================'), nl, show_facts. unify_sets([],[]). unify_sets([A|As],[B|Bs]) :- set_unify(A,B), unify_sets(As,Bs). %---------------- Transformed program ---------------------- main__1(_428,_430) :- [_365] = _432, [_399] = _434, init([num],[num],[num],[_365],[_379]), randomize([_379],[_395],[num]), investigate([_395],[_399]), normalize_result([_432,_434], [_428,_430]). init__1(_392,_394,_396,_398,_400) :- [_342] = _402, [_350] = _404, [_354] = _406, [_358] = _408, [_362] = _410, init([_342],[_350],[_350],[_354],[_358],[_362]), normalize_result([_402,_404,_406,_408,_410], [_392,_394,_396,_398,_400]). init__1(_238,_240,_242,_244,_246,_248) :- [num] = _250, [_197] = _252, [_201] = _254, [_205] = _256, [_209] = _258, [_213] = _260, normalize_result([_250,_252,_254,_256,_258,_260], [_238,_240,_242,_244,_246,_248]). init__1(_999,_1001,_1003,_1005,_1007,_1009) :- [_898] = _1011, [_913] = _1013, [_937] = _1015, [_941] = _1017, [_945] = _1019, [list,_949] = _1021, fill([_913],[list],[_823]), get_pats([_941],[_945],[_839]), 'my is'([_871],[[_937],[_913]]), fill([_871],[list,_823],[_881]), 'my is'([_929],[[_898],[num]]), test([_913],[_933],[_937]), init([_929],[_933],[_937],[_941],[_945],[_949]), normalize_result([_1011,_1013,_1015,_1017,_1019,_1021], [_999,_1001,_1003,_1005,_1007,_1009]). test__1(_286,_288,_290) :- [_232] = _292, [_250] = _294, [_259] = _296, 'my ='([_232],[num]), 'my is'([_250],[_259]), normalize_result([_292,_294,_296], [_286,_288,_290]). test__1(_259,_261,_263) :- [_229] = _265, [_220] = _267, [_205] = _269, 'my is'([_220],[[_229],[num]]), normalize_result([_265,_267,_269], [_259,_261,_263]). fill__1(_149,_151,_153) :- [num] = _155, [_133] = _157, [_133] = _159, normalize_result([_155,_157,_159], [_149,_151,_153]). fill__1(_362,_364,_366) :- [_313] = _368, [_332] = _370, [list,_336] = _372, 'my is'([_328],[[_313],[num]]), fill([_328],[_332],[_336]), normalize_result([_368,_370,_372], [_362,_364,_366]). randomize__1(_145,_147,_149) :- [list] = _151, [list] = _153, [_129] = _155, normalize_result([_151,_153,_155], [_145,_147,_149]). randomize__1(_613,_615,_617) :- [_553] = _619, [list,_574] = _621, [_516] = _623, mylength([_553],[_500]), 'my is'([_578],[[_516],[num]]), 'my is'([_549],[_578]), split([_549],[_553],[_557],[_570]), randomize([_570],[_574],[_578]), normalize_result([_619,_621,_623], [_613,_615,_617]). split__1(_188,_190,_192,_194) :- [num] = _196, [list,_169] = _198, [_165] = _200, [_169] = _202, normalize_result([_196,_198,_200,_202], [_188,_190,_192,_194]). split__1(_426,_428,_430,_432) :- [_370] = _434, [list,_389] = _436, [_393] = _438, [list,_397] = _440, 'my is'([_385],[[_370],[num]]), split([_385],[_389],[_393],[_397]), normalize_result([_434,_436,_438,_440], [_426,_428,_430,_432]). investigate__1(_122,_124) :- [list] = _126, [_109] = _128, normalize_result([_126,_128], [_122,_124]). investigate__1(_372,_374) :- [list,_342] = _376, [_346] = _378, property([_315],[atom],[_331]), p_investigate([_331],[_346]), investigate([_342],[_346]), normalize_result([_376,_378], [_372,_374]). get_pats__1(_284,_286,_288) :- [_248] = _290, [_260] = _292, [_256] = _294, get_pats([_248],[_260],[_256],[_260]), normalize_result([_290,_292,_294], [_284,_286,_288]). get_pats__1(_174,_176,_178,_180) :- [num] = _182, [_147] = _184, [list] = _186, [_155] = _188, normalize_result([_182,_184,_186,_188], [_174,_176,_178,_180]). get_pats__1(_426,_428,_430,_432) :- [_370] = _434, [list,_389] = _436, [list,_393] = _438, [_397] = _440, 'my is'([_385],[[_370],[num]]), get_pats([_385],[_389],[_393],[_397]), normalize_result([_434,_436,_438,_440], [_426,_428,_430,_432]). get_pats__1(_307,_309,_311,_313) :- [_269] = _315, [list] = _317, [_277] = _319, [_281] = _321, get_pats([_269],[_281],[_277],[_281]), normalize_result([_315,_317,_319,_321], [_307,_309,_311,_313]). property__1(_360,_362,_364) :- [list,_84] = _366, [_314] = _368, [_334] = _370, my_functor([_330],[_314],[_318]), my_arg([num],[_330],[_334]), normalize_result([_366,_368,_370], [_360,_362,_364]). property__1(_269,_271,_273) :- [list,_238] = _275, [_242] = _277, [_246] = _279, property([_238],[_242],[_246]), normalize_result([_275,_277,_279], [_269,_271,_273]). my_functor__1(_159,_161,_163) :- [other] = _165, [atom] = _167, [list,list,list] = _169, normalize_result([_165,_167,_169], [_159,_161,_163]). my_functor__1(_175,_177,_179) :- [list,_84] = _181, [atom] = _183, [list,list,list] = _185, normalize_result([_181,_183,_185], [_175,_177,_179]). my_functor__1(_149,_151,_153) :- [other] = _155, [atom] = _157, [list,list] = _159, normalize_result([_155,_157,_159], [_149,_151,_153]). my_functor__1(_149,_151,_153) :- [other] = _155, [atom] = _157, [list,list] = _159, normalize_result([_155,_157,_159], [_149,_151,_153]). my_arg__1(_145,_147,_149) :- [num] = _151, [other] = _153, [_129] = _155, normalize_result([_151,_153,_155], [_145,_147,_149]). my_arg__1(_161,_163,_165) :- [num] = _167, [list,_100] = _169, [_145] = _171, normalize_result([_167,_169,_171], [_161,_163,_165]). my_arg__1(_145,_147,_149) :- [num] = _151, [other] = _153, [_129] = _155, normalize_result([_151,_153,_155], [_145,_147,_149]). my_arg__1(_145,_147,_149) :- [num] = _151, [other] = _153, [_129] = _155, normalize_result([_151,_153,_155], [_145,_147,_149]). p_investigate__1(_122,_124) :- [list] = _126, [_109] = _128, normalize_result([_126,_128], [_122,_124]). p_investigate__1(_283,_285) :- [list,_256] = _287, [_260] = _289, p_match([_260],[_249]), p_investigate([_256],[_260]), normalize_result([_287,_289], [_283,_285]). p_match__1(_122,_124) :- [list] = _126, [_109] = _128, normalize_result([_126,_128], [_122,_124]). p_match__1(_270,_272) :- [list,_84] = _274, [_225] = _276, match([_225],[_229]), 'my ='([atom],[atom]), normalize_result([_274,_276], [_270,_272]). p_match__1(_215,_217) :- [list,_191] = _219, [_195] = _221, p_match([_191],[_195]), normalize_result([_219,_221], [_215,_217]). match__1(_116,_118) :- [list] = _120, [list] = _122, normalize_result([_120,_122], [_116,_118]). match__1(_290,_292) :- [list,_263] = _294, [list,_267] = _296, 'my ='([_245],[_254]), match([_263],[_267]), normalize_result([_294,_296], [_290,_292]). match__1(_369,_371) :- [_331] = _373, [list,_343] = _375, 'my ='([_305],[other]), concat([_323],[_339],[_331]), match([_339],[_343]), normalize_result([_373,_375], [_369,_371]). match__1(_331,_333) :- [list,_301] = _335, [list,_305] = _337, my_atom([_283]), 'my ='([_283],[_292]), match([_301],[_305]), normalize_result([_335,_337], [_331,_333]). match__1(_295,_297) :- [list,_268] = _299, [list,_272] = _301, match([_257],[_261]), match([_268],[_272]), normalize_result([_299,_301], [_295,_297]). my_atom__1(_93) :- [atom] = _95, normalize_result([_95], [_93]). my_atom__1(_93) :- [atom] = _95, normalize_result([_95], [_93]). concat__1(_149,_151,_153) :- [list] = _155, [_133] = _157, [_133] = _159, normalize_result([_155,_157,_159], [_149,_151,_153]). concat__1(_279,_281,_283) :- [list,_248] = _285, [_252] = _287, [list,_256] = _289, concat([_248],[_252],[_256]), normalize_result([_285,_287,_289], [_279,_281,_283]). length__1(_226,_228) :- [_197] = _230, [_205] = _232, length([_197],[num],[_205]), normalize_result([_230,_232], [_226,_228]). length__1(_149,_151,_153) :- [list] = _155, [_133] = _157, [_133] = _159, normalize_result([_155,_157,_159], [_149,_151,_153]). length__1(_362,_364,_366) :- [list,_328] = _368, [_313] = _370, [_336] = _372, 'my is'([_332],[[_313],[num]]), length([_328],[_332],[_336]), normalize_result([_368,_370,_372], [_362,_364,_366]). %---------------- Definitions of tabled preds -------------- :- table length__1/3. :- table length__1/2. :- table concat__1/3. :- table my_atom__1/1. :- table match__1/2. :- table p_match__1/2. :- table p_investigate__1/2. :- table my_arg__1/3. :- table my_functor__1/3. :- table property__1/3. :- table get_pats__1/4. :- table get_pats__1/3. :- table investigate__1/2. :- table split__1/4. :- table randomize__1/3. :- table fill__1/3. :- table test__1/3. :- table init__1/6. :- table init__1/5. :- table main__1/2. length(_63,_65,_67) :- length__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). mylength(_63,_65) :- length__1(_67,_69), unify_sets([_63,_65], [_67,_69]). concat(_63,_65,_67) :- concat__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). my_atom(_63) :- my_atom__1(_65), unify_sets([_63], [_65]). match(_63,_65) :- match__1(_67,_69), unify_sets([_63,_65], [_67,_69]). p_match(_63,_65) :- p_match__1(_67,_69), unify_sets([_63,_65], [_67,_69]). p_investigate(_63,_65) :- p_investigate__1(_67,_69), unify_sets([_63,_65], [_67,_69]). my_arg(_63,_65,_67) :- my_arg__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). my_functor(_63,_65,_67) :- my_functor__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). property(_63,_65,_67) :- property__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). get_pats(_63,_65,_67,_69) :- get_pats__1(_71,_73,_75,_77), unify_sets([_63,_65,_67,_69], [_71,_73,_75,_77]). get_pats(_63,_65,_67) :- get_pats__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). investigate(_63,_65) :- investigate__1(_67,_69), unify_sets([_63,_65], [_67,_69]). split(_63,_65,_67,_69) :- split__1(_71,_73,_75,_77), unify_sets([_63,_65,_67,_69], [_71,_73,_75,_77]). randomize(_63,_65,_67) :- randomize__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). fill(_63,_65,_67) :- fill__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). test(_63,_65,_67) :- test__1(_69,_71,_73), unify_sets([_63,_65,_67], [_69,_71,_73]). init(_63,_65,_67,_69,_71,_73) :- init__1(_75,_77,_79,_81,_83,_85), unify_sets([_63,_65,_67,_69,_71,_73], [_75,_77,_79,_81,_83,_85]). init(_63,_65,_67,_69,_71) :- init__1(_73,_75,_77,_79,_81), unify_sets([_63,_65,_67,_69,_71], [_73,_75,_77,_79,_81]). main(_63,_65) :- main__1(_67,_69), unify_sets([_63,_65], [_67,_69]). %---------------- Tp --------------------------------------- tp :- length__1(_64,_66,_68), fail. tp :- length__1(_64,_66), fail. tp :- concat__1(_64,_66,_68), fail. tp :- my_atom__1(_64), fail. tp :- match__1(_64,_66), fail. tp :- p_match__1(_64,_66), fail. tp :- p_investigate__1(_64,_66), fail. tp :- my_arg__1(_64,_66,_68), fail. tp :- my_functor__1(_64,_66,_68), fail. tp :- property__1(_64,_66,_68), fail. tp :- get_pats__1(_64,_66,_68,_70), fail. tp :- get_pats__1(_64,_66,_68), fail. tp :- investigate__1(_64,_66), fail. tp :- split__1(_64,_66,_68,_70), fail. tp :- randomize__1(_64,_66,_68), fail. tp :- fill__1(_64,_66,_68), fail. tp :- test__1(_64,_66,_68), fail. tp :- init__1(_64,_66,_68,_70,_72,_74), fail. tp :- init__1(_64,_66,_68,_70,_72), fail. tp :- main__1(_64,_66), fail. tp. %---------------- Builtin Preds ---------------------------- 'my ='(X1,X2) :- 'my =_1'(Y1,Y2), unify_sets([X1,X2],[Y1,Y2]). 'my \\=='(X1,X2) :- 'my \\==__1'(Y1,Y2), unify_sets([X1,X2],[Y1,Y2]). 'my is'(X1,X2) :- 'my is__1'(Y1,Y2), unify_sets([X1,X2],[Y1,Y2]). 'my <'([num],[num]). 'my >'([num],[num]). 'my >='([num],[num]). 'my =<'([num],[num]). 'my =:='([num],[num]). 'my =\\='([num],[num]). 'my =_1'(X,X). 'my \\==__1'(_,_). 'my is__1'(num,num). %---------------- Show Result ------------------------------ show_facts :- length__1(_63,_65,_67), numbervars([_63,_65,_67]), write(length(_63,_65,_67)), nl, fail. show_facts :- length__1(_63,_65), numbervars([_63,_65]), write(length(_63,_65)), nl, fail. show_facts :- concat__1(_63,_65,_67), numbervars([_63,_65,_67]), write(concat(_63,_65,_67)), nl, fail. show_facts :- my_atom__1(_63), numbervars([_63]), write(my_atom(_63)), nl, fail. show_facts :- match__1(_63,_65), numbervars([_63,_65]), write(match(_63,_65)), nl, fail. show_facts :- p_match__1(_63,_65), numbervars([_63,_65]), write(p_match(_63,_65)), nl, fail. show_facts :- p_investigate__1(_63,_65), numbervars([_63,_65]), write(p_investigate(_63,_65)), nl, fail. show_facts :- my_arg__1(_63,_65,_67), numbervars([_63,_65,_67]), write(my_arg(_63,_65,_67)), nl, fail. show_facts :- my_functor__1(_63,_65,_67), numbervars([_63,_65,_67]), write(my_functor(_63,_65,_67)), nl, fail. show_facts :- property__1(_63,_65,_67), numbervars([_63,_65,_67]), write(property(_63,_65,_67)), nl, fail. show_facts :- get_pats__1(_63,_65,_67,_69), numbervars([_63,_65,_67,_69]), write(get_pats(_63,_65,_67,_69)), nl, fail. show_facts :- get_pats__1(_63,_65,_67), numbervars([_63,_65,_67]), write(get_pats(_63,_65,_67)), nl, fail. show_facts :- investigate__1(_63,_65), numbervars([_63,_65]), write(investigate(_63,_65)), nl, fail. show_facts :- split__1(_63,_65,_67,_69), numbervars([_63,_65,_67,_69]), write(split(_63,_65,_67,_69)), nl, fail. show_facts :- randomize__1(_63,_65,_67), numbervars([_63,_65,_67]), write(randomize(_63,_65,_67)), nl, fail. show_facts :- fill__1(_63,_65,_67), numbervars([_63,_65,_67]), write(fill(_63,_65,_67)), nl, fail. show_facts :- test__1(_63,_65,_67), numbervars([_63,_65,_67]), write(test(_63,_65,_67)), nl, fail. show_facts :- init__1(_63,_65,_67,_69,_71,_73), numbervars([_63,_65,_67,_69,_71,_73]), write(init(_63,_65,_67,_69,_71,_73)), nl, fail. show_facts :- init__1(_63,_65,_67,_69,_71), numbervars([_63,_65,_67,_69,_71]), write(init(_63,_65,_67,_69,_71)), nl, fail. show_facts :- main__1(_63,_65), numbervars([_63,_65]), write(main(_63,_65)), nl, fail. show_facts.