% Sample queries for pac-0.6.3 [2015/03/26] % pac-0.6.4 [2015/03/30] % pac-1.1.9 [2017/05/28] minor changes. % % Queries in this document have been used to test the pac core % expand-pac.pl, % expand-word.pl, and % expand-etc.pl. % % Newly added queries are related on the following form: % % eval --- eval on term-completion based fuctional expressions % mrec, rec --- a system of recursive PAC (nameless predicates) % let_w, let_wd, let_wl, let_wld, % --- hybrid regular expressions, steps in automata synthesis % let_sed --- unix-sed like function in phrases. /************* * eval * *************/ % ?- module(pac). % ?- call(pred([a]), X). %@ X = a. % ?- eval(1, R). %@ R = 1. % ?- eval([1,2], R). %@ R = [1, 2]. % ?- eval("hello", R). %@ R = "hello". % ?- eval((X\X) @ 1, R). %@ R = 1. % ?- eval(append@[1,2]@[3,4], R). %@ R = [1, 2, 3, 4]. % ?- eval(append@[a,b,c]@[1,2,3], X). %@ X = [a, b, c, 1, 2, 3]. % ?- eval(([A,B]\ (([X,Y] \ append(X, Y)) @ A @ B)) @ [1,2] @ [a,b], R). %@ R = [1, 2, a, b]. % ?- eval(([A,B]\ (([X,Y] \ :append(X, Y)) @ A @ B)) @ [1,2] @ [a,b], R). %@ R = [1, 2, a, b]. % ?- eval((X\X)@(Y\Y), V). %@ V = mpac:'pred#6'. % ?- eval((X\X)@(Y\Y), V), call(V, hello, R). %@ V = mpac:'pred#8', %@ R = hello. % ?- eval(pred([X, X]), R). % <<<< intentional error % ?- eval(pred([X, X])@3, R). %@ R = 3. % ?- eval(#(f) @ 1 @ 2, U). %@ U = mpac:f(1, 2). % ?- eval(#(pred([a, b])), R). %@ R = mpac:'pred#12'. % ?- eval(#((X\X) @ (Y\Y)) @ 3, U). %@ U = mpac:'pred#14'(mpac:'pred#13', 3). % ?- eval(#(f) @ #(Y\Y) @ 3, U). %@ U = mpac:f(mpac:'pred#15', 3). % ?- eval(#(X\X) @ (Y\Y) @ 3, U). %@ U = mpac:'pred#17'(mpac:'pred#16', 3). % ?- eval(#((X\X) @ (Y\Y)) @ 3, U). %@ U = mpac:'pred#19'(mpac:'pred#18', 3). % ?- eval(#(X\X) @ 3, U), call(U, V). %@ U = mpac:'pred#20'(3), %@ V = 3. % ?- eval(((X\X) @ (Y\Y)) @ 3, U). % <<<<< error test % ?- eval(#((X\X) @ (Y\Y)) @ 3, U). %@ U = mpac:'pred#24'(mpac:'pred#23', 3). % ?- eval(#((X\X) @ (Y\Y)) @ 3, U). %@ U = mpac:'pred#36'(mpac:'pred#35', 3). % ?- eval(#((X\X) @ #(Y\Y)) @ 3, U). %@ U = mpac:'pred#34'(mpac:'pred#33', 3). % ?- eval(#(X\X) @ #(Y\Y) @ 3, U). %@ U = mpac:'pred#32'(mpac:'pred#31', 3). % ?- eval(([X,Y] -> append(Y,X))@[1,2,3]@[a,b,c,d,e], R). %@ R = [a, b, c, d, e, 1, 2, 3]. % ?- eval(maplist@ (fun([X,Y] -> quote(X-Y))) @ [1,2,3] @ [a,b,c], R). %@ R = [1-a, 2-b, 3-c]. % ?- eval(maplist @ (X \ (append(X)@ append([a],[b]))) @ [[1,2],[3,4]], R). %@ R = [[1, 2, a, b], [3, 4, a, b]]. % ?- eval(maplist@ fun([X]-> (append(X) @ append([a],[b])))@[[1,2],[3,4]], R). %@ R = [[1, 2, a, b], [3, 4, a, b]]. % ?- eval( maplist@([X] \ (append(X)@ append([a],[b]))) @ [[1,2],[3,4]], R). %@ R = [[1, 2, a, b], [3, 4, a, b]]. % ?- eval(maplist@ (X\((Y\[Y,Y])@X))@ numlist(1, 100), R). %@ R = [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8|...], [...|...]|...]. % ?- eval(maplist@ (X\ [X]) @ [a,b,c], R). %@ R = [[a], [b], [c]]. % ?- eval(maplist@ pred([], [P-Q, Q-P])@[a-1,b-2], R). %@ R = [1-a, 2-b]. % ?- eval((X\X)@[3,4], R). %@ R = [3, 4]. % ?- eval(fun([X] -> X) @ (misc:set([3,4]+[5,6])), R). %@ R = [3, 4, 5, 6] . % ?- eval(fun([X] -> X) @ (misc:set([3,4]+[5,6])), R). %@ R = [3, 4, 5, 6] . % ?- eval((X\X)@ (misc:set([a,b]\[b,c])), R). %@ R = [a] . % ?- eval(flip([C, D]:- misc:set(pow(C), D))@ (misc:set(pow([1,2,3]))), R). %@ C = [[3], [3, 1], [3, 2, 1], [3, 2], [2], [2, 1], [1], []], %@ D = R, R = [[[]], [[], [3]], [[], [3, 1], [3]], [[], [3, 1]], [[], [3, 2|...], [3|...]], [[], [3|...], [...|...]|...], [[], [...|...]|...], [[]|...], [...|...]|...] . % ?- eval(flip([A,B,C]:- C is A*B)@2@3, R). % ?- eval(flip(([A,B,C]:- C0 is A*B, C is C0*C0))@2@3, R). %@ A = 2, %@ B = 3, %@ C = R, R = 36, %@ C0 = 6. /************************************** * mrec(mutual recursion) / rec * **************************************/ % ?- pac:expand_core(mrec([], [A = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(A, Y, Z, U)))]), user, G, P, []). % ?- call(mrec([A = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(A, Y, Z, U)))]), [a,b],[c,d], R). % ?- call(mrec([A = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(B, Y, Z, U))), B = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(A, Y, Z, U)))]), [a % ?- call(mrec([A = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(B, Y, Z, U))), B = pred([[], X, X] & ([[X|Y],Z,[X|U]]:- call(A, Y, Z, U)))]), W, V, [a,b, c,d]). % ?- call(mrec(H, [A = pred([[], X, [H|X]] & ([[X|Y],Z,[H, X|U]]:- call(B, Y, Z, U))), B = pred([[], X, [H|X]] & ([[X|Y],Z,[H, X|U]]:- call(A, Y, Z, U)))]),[a], [b], R), H=hello. % ?- call(mrec(H, [A = pred([[], X, [H|X]] & ([[X|Y],Z,[H, X|U]]:- call(B, Y, Z, U))), B = pred([[], X, [H|X]] & ([[X|Y],Z,[H, X|U]]:- call(A, Y, Z, U)))]),[a,b], [c,d], R), H=hello. % ?- call(rec(A, [], [[], X, X] & ([[X|Y],Z,[X|U]]:- call(A, Y, Z, U))), U, V, [a,b,c,d]). % ?- let(Append, rec(A, [], [[], X, X] & ([[X|Y],Z,[X|U]]:- call(rec(B, [], [[], X, X] & ([[X|Y],Z,[X|U]]:- call(B, Y, Z, U))), Y, Z, U)))), call(Append, U, V, [a,b,c,d]). % ?- call(mrec([A = pred(G, [[], X, [G|X]] & ([[X|Y],Z,[G, X|U]]:- call(B, G, Y, Z, U))), B = pred(G, [[], X, [G|X]] & ([[X|Y],Z,[G, X|U]]:- call(A, G, Y, Z, U)))]), [a],[b], R), G = hello. /*************** * regex * ***************/ % ?- regex_am("a*********************************", R). % ?- regex_am("a*b*c*", R). % ?- regex_am("ab*", R). % ?- regex_am(".", R). % ?- regex_am(char(.), R). % ?- regex_am(., R). % ?- regex_am(*(.), R). % ?- regex_am(".*", R). % ?- regex_am("a*", R). % ?- regex_am(+(.), R). % ?- regex_am(+(a), R). % ?- regex_am(*(+char(alnum)), R). % ?- let(X, phrase(w("[^\\n]", A), `abc\n`)), call(X, R). % ?- phrase(w("[^\\n]", A), `abc\n`, R). % ?- phrase(w("[^\\n]*", A), `abc\n`, R). % ?- phrase(w("[^\\n]*$", A), `abc\n`, R). % ?- phrase(w("[^b]*c$", A), `aaaaaac`, R). % ?- phrase(w("[^b]*$", A), `aaaaaa\n`, R). % ?- phrase(w("[^b]*$", A), `aa\naa`, R). % ?- x_char_boole_form($, X), iboole:i_boole(X, I). % ?- am_special($, [1,2,3], E). % ?- phrase(w(char(alnum) + *(char(alpha))), [a, '1', b,c], S). % ?- phrase(w(char(alnum) + *(char(alpha))), `a1bc`, S). % ?- phrase(w(ab+cd), `abcde`, S). % ?- phrase(w("abcd"), `abcde`, S). % ?- phrase(w(i(2)+i(3)), [2,3], S). % ?- phrase(w(i(2)+i(3)), [2,3], S). % ?- phrase(w(i(2)^(=<(3))), [2,2], S). % ?- phrase(w(i(2)^(>=(3))), [2,2,2,2], S). %%% regex to coalgebra. % % ?- regex_coalgebra("23", S). % ?- regex_coalgebra(i(2)+i(3), S). % ?- regex_coalgebra("[^\\./]*", X). % ?- regex_coalgebra(( "\"([^\"\\\\]|(\\\\.))*\"" | "'([^'\\\\]|(\\\\.))*'" | "[^ \t\"']+"), X). % ?- regex_coalgebra(*(a|b)+ [a]+(*([])) + (*(*([]|[]))), N). % ?- regex_coalgebra(*(a|b)+ "a"+(*([]))+ (*(*([]|[]))), N). % ?- regex_coalgebra(*(.), X). % ?- regex_coalgebra(".*", X). % ?- regex_coalgebra_char(".*", X). % ?- regex_coalgebra_char("a*", X). % ?- regex_coalgebra_code("a*", X). % ?- regex_coalgebra(ab+cd, X). % ?- regex_coalgebra_code(ab+cd, X). % ?- regex_coalgebra_char("[adlz]", X). % ?- regex_coalgebra(ab+cd, X, [code]). % ?- regex_coalgebra_char(ab+cd, X). % ?- regex_coalgebra_char(a, X). % ?- regex_coalgebra_char(i([-1, -1]), X). % ?- regex_coalgebra_char(a, X). % ?- regex_coalgebra_char("a*", X), state_move([a], 1, S, X). % ?- regex_coalgebra_char("a*", X), state_move([a,a,a], 1, S, X). % ?- regex_coalgebra("a*", X, [char]), state_move([a,a], 1, S, X). % ?- regex_coalgebra("\001\*", X, [code]). % ?- regex_coalgebra(i([-1, -1]), X). /*************************** * map character classes * ***************************/ % ?- phrase(w(char(alnum) + *(char(alpha))), `a1bc`, S). % ?- phrase(w(ab+cd), `abcde`, S). % ?- phrase(w("abcd"), `abcde`, S). % ?- map_coa_char_int(R, [1-[[97-97]-2], 2-[[]]]). /********************* * goto states * *********************/ % ?- coa:am_char_dict([2-[[inf-sup]-3]], C, [], P). %@ C = [2-[_G2137-3]], %@ P = [[inf-sup]-_G2137]. % ?- split_goto([1-[[], [1,2,3]-s, [2,3]-t], 1-[[1,2,3]-s, [2,3]-t]], X). %@ X = [1-[[], 1-s, 2-s, 3-s, 2-t, 3-t], 1-[1-s, 2-s, 3-s, 2-t, 3-t]] . /***************************** * automaton synthesis * *****************************/ %% word_am(X:regex, Y:automata) is det % % True if X is converted to Y. % ?- coalgebra:show_am(".*"). % ?- coalgebra:show_am(@($)). % ?- coalgebra:show_am(a). % ?- coalgebra:show_am(a^(3-5)). % ?- coalgebra:show_am(a^(>=(5))). % ?- regex_coalgebra(a^(>=(1)), X). % ?- regex_coalgebra(a^(>=(1)), X). % ?- regex_am((.), R). % ?- regex_word((special($) + a), Y, Z). % ?- regex_coalgebra("(\000\|\001\)*", X, [code]), state_move([0,1,0,0], 1, S, X). % ?- regex_coalgebra(i(-1), X, [code]). % ?- regex_coalgebra(i([-1, -2]), X, [code]). % ?- regex_coalgebra(*(i([-5 - -1])), X, [code]), state_move([-1, -2, -3], 1, S, X). % ?- regex_coalgebra(i(-1) + *(i(0)) + i(-2), X, [code]), state_move([-1, -2], 1, S, X). % ?- regex_coalgebra(i(-1) + *(i(0)) + i(-2), X, [code]), state_move([-1, 0,0, 0, 0, -2], 1, S, X). % ?- am_codes([a,b], X). % ?- am_codes([], X). % ?- i_normal_class_form([-1, -2], X). /****************************************** * automaton sysnthesis basic steps * ******************************************/ % ?- expand_power_state([x,y], [x-[a-2, b-3], y-[a-2, b-4, c-5]], R, A, []). % ?- expand_power_state([x,y], [x-[[], a-2, b-3], y-[a-2, b-4, c-5]], R, A, []). % ?- expand_power_state([x,y], [x-[special(s), a-2, b-3], y-[a-2, b-4, c-5]], R, A, []). % ?- is_deterministic(coa([1-[a-1, b-1]], _)). % ?- is_deterministic(coa([1-[a-1, a-1]], _)). % ?- regex_coalgebra(".*****", X). % ?- am_minimum([2-[[], (inf-sup)-3], 3-[[], (inf-sup)-3]], 2, R). % ?- am_minimum(coa([1-[a-2, b-1], 2-[a-1, b-2], 3-[a-3, b-1]], 1), D). % ?- x_compare(C, x(2), 1-2). % ?- coa:merge_pairs([a-2, a-3, a-2, b-1, b-3, c-2], R, [], S, []). % ?- coa:join_char_interval([], []). % ?- coa:join_char_interval([(3-4)-t], R). % ?- coa:join_char_interval([(inf-4)-t, (5-sup)-t], R). % ?-join_char_interval([(10-sup)-t, (20-20)-s, (inf-4)-t], R). % ?- coa:merge_target([a-1], R, []). % ?- coa:merge_target([a-1, a-2], R, []). % ?- coa:merge_target([a-1, a-2, b-3], R, []). % ?- coa:merge_target([[], a-1, a-2, b-3], R, []). % ?- coa:merge_target([[], a-1, b-3, a-2], R). % ?- union_find([a-b,x-y, x-x, y-z, b-c], [], R). % ?- union_find([a-b,x-y, x-x, y-z, b-c], [], R). % ?- coa:find_cluster(a, [[a,b],[c,d]], C, X). % ?- am_flip([a-[b-c], d-[b-c], e-[b-c], x-[y-z]], R). % ?- am_flip([a-[b-c], d-[b-c], e-[m-c], x-[y-z]], R). % ?- am_flip([a-[[], b-c, d-e, e-c], x-[y-z]], R). % ?- am_flip([a-[d-e, e-c], x-[y-z]], R). % ?- am_flip([1-[a-1]], R). % ?- am_flip([], X). % ?- am_reverse(coa([1-[[]]], 1), R). m% ?- am_reverse(coa([1-[a-2], 2-[b-3], 3-[[]]], 1), R). % ?- power_state_closure([[1]], [1-[a-[1]]], [], X). % ?- power_state_closure([[1]], [1-[a-[2]], 2-[a-[1,2], b-[1]]], [], X). % ?- merge_goto([1,2], [1-[a-[2,3]], 2-[a-[1,2], b-[3]]], [], X). % ?- gdict_ord_merge([[], a-[1,2], c-[3]], [a-[2,3], b-[2]], R). % ?- triples_to_coa([1-(a-4), 3-(c-3), 2-(b-1), 1-(a-2)], R). % ?- coa:fiber_product_basic([a-[b,c]], [a-[1,2]], [], P). % ?- coa:am_conflict_pairs([a-[[],1-a], b-[1-b]], S). % ?- coa:am_conflict_pairs([a-[[],1-a], b-[1-b], c-[[],1-a]], S). % ?- coa:am_conflict_pairs([a-[1-a], b-[1-b]], S). % ?- coa:am_conflict_pairs([a-[[]], b-[[]]], S). % ?- coa:fiber_product([a-[7,8,9], b-[1,2,3]], [a-[6,7,8], b-[1,2,3]], P). % ?- pairs_to_assoc([1-[], 1-2, 1-3, 2-3, 2-4], X, []). % ?- coa:assoc_to_pairs([1-[2,3], 2-[3,4]], R, []). % ?- coa:contract_merge([1,3,6], [2, 5, 7], R). % ?- union([1,3,6], [2, 5, 7], R). % ?- union([1,3,6], [2, 3, 5, 7], R). % ?- coa:contract_insert(3, [2, 5, 7], R). % ?- coa:final_states([1-[[],a-b], 2-[c-d]], R). % ?- coa:arity_conflict_pairs([1-a, 2-b, 3-a, 4-b], A, []). % ?- coa:s_product([1,2,3],[1,2,3], P). % ?- coa:assoc_product([1,2,3], [1,2,3], R, []). % ?- coa:assoc_subtract([1-[2,3,4], 2-[3,4], 3-[4,5,6]], [1-[3], 2-[4], 5-[6,7,8]], R). % ?- coa:assoc_complement([1,2,3], [1-[2], 2-[3]], R). % ?- coa:am_concat(coa([1-[[], a-2], 2-[[]]],1), coa([1-[a-2], 2-[[]]],1), R). % ?- coa:am_concat(coa([1-[[], a-1]],1), coa([1-[[], b-1]],1), R). % ?- coa:am_shift(3, coa([1-[a-2, b-3]],1), R). % ?- coa:am_replace_null([a-2], 2-[[]], X). % ?- coa:am_plus(coa([1-[a-2], 2-[[]]], 1), R). % ?- coa:am_star(coa([1-[a-2], 2-[[]]], 1), R). % ?- coa:am_star(coa([1-[a-2, b-3], 3-[[]], 2-[[]]], 1), R). % ?- coa:am_star(coa([1-[a-2, a-3, b-3], 3-[[]], 2-[[]]], 1), R). % ?- coa:am_star(coa([1-[a-2], 2-[[]]], 1), R). % ?- coa:am_star(coa([1-[a-2, b-2], 2-[[]]], 1), R). % ?- coa:am_plus(coa([1-[a-2, b-2], 2-[[]]], 1), R). % ?- coa:am_copy(coa([1-[a-2], 2-[[]]], 1), D). % ?- am_finals(coa([1-[[]], 2-[a-3], 3-[[]]], 1), R). % ?- am_states(coa([1-[[]], 2-[a-3], 3-[[]]], 1), R). % ?- coa:subst_coa([1-[b-2]], [1-9, 2-10], X). % ?- coa:subst_coa([1-[[], b-2]], [1-9, 2-10], X). % ?- coa:am_remove_useless_states(coa([1-[[], a-1, a-2], 2-[b-3], 3-[c-3]], 1), R). % ?- coa:dg_path_find([], [1-[2], 2-[1]], [], X, Y). % ?- coa:dg_path_find([1], [1-[2], 2-[1], 3-[1,2]], [], X, Y). % ?- coa:am_connected_region(coa([1-[[]]], 1), C). % ?- coa:am_connected_region(coa([1-[[], a-2], 2-[[]], 3-[a-3]], 1), C). % ?- coa:am_connected_region(coa([1-[[], a-2], 2-[[]], 3-[a-3]], 1), C). % ?- coa:am_remove_empty_states(coa([], 1), C). % ?- coa:am_remove_empty_states(coa([1-[[],a-2], 2-[]], 1), C). % ?- coa:am_remove_empty_states(coa([1-[[],a-2, a-3], 3-[b-2], 2-[]], 1), % ?- coa:am_remove_states([1-[a-2,b-2]], [1,2], R). % ?- coa:am_remove_states([1-[[],a-2,b-2], 2-[b-1]], [1], R). % ?- cook_char_dict(0, 127, atom, Dict), maplist(([X]:- writeq(X), nl), Dict). % ?- collect_chars(0, 10000, alpha, X). % ?- compile_coa_state_one('nt#149', dot([97-97])-2, 0, user, _G3803, _G4943, [1-'nt#149', 2-'nt#150']). % ?- compile_coa_state_one('nt#149', [97-97]-2, 0, user, _G3803, _G4943, [1-'nt#149', 2-'nt#150']). % ?- compile_coa_rule([97-97], 0, a, b, user, P, []). % ?- generate_code_test([1-1], V, C). % ?- generate_code_test([1-1, 4-4], V, C). % ?- generate_code_test([(1-4)\2], V, C). % ?- adjacent_interval([1-2, 4-5, 7-9, 11-13], P, []). % ?- adjacent_interval([1-2, 4-5, 7-9, 11-13, 15-17], P, []). % ?- coalgebra:show_am("\\\\[a-zA-Z]*"). % ?- coalgebra:show_am("[a-zA-Z]*"). /*************** * regex * ***************/ % ?- phrase((w(*(.), X), w(*(.), Y)), [a,b,c], []). % ?- phrase((wl(*(.), X), wl(*(.), Y)), [a,b,c], []). % ?- expand_w("a*$", [], G, P, []). % ?- phrase(w("a*"), `aaaaab`, R). % ?- expand_w("a*", A, [], [], G, P, []). % ?- regex_compare(C, "a", "a"). % ?- regex_compare(C, "a", "b"). % ?- regex_compare(C, "a*", "a"). % ?- regex_normal_am_list(["a", "b"], R). % ?- regex_normal_am_list(["(ab)*", "b"], R). /*************************** * bisimilarity test * ***************************/ % ?- am_bisimilar(coa([], 0), coa([], 1)). % ?- am_bisimilar(coa([1-[[]]], 1), coa([1-[[]]], 1)). % ?- regex_am("a", R), am_bisimilar(R, R). % ?- regex_am(a+ (+a), R), regex_am((+a)+a, S), !, am_bisimilar(R, S). % ?- regex_am(a+ (+a), R), regex_am((+a)+a+a, S), !, am_bisimila /********************************* * one-way similarity test * *********************************/ % ?- regex_am("a", A), regex_am("b", B), am_compare(C, A, B). % ?- regex_am("a", A), regex_am("a", B), am_compare(C, A, B). % ?- regex_am("a", A), regex_am("a*", B), word:am_compare(C, A, B). % ?- word:regex_am("a*", A), word:regex_am("a", B), word:am_compare(C, A, B). /************************ * queries on sed * ************************/ % full sed in phrase is not yet finished, but already % partially works well. % ?- module(mpac). %% <=== must % ?- show(phrase(sed(w("a") >> pred([`x`])))). % ?- show(phrase(sed(w(".+", A) >> pred(A, [[A,A]])), `ab`, V)). % ?- show_phrase(sed((w(".", A), w(".", B)) >> append(B, A))). % ?- show_phrase(sed(w("a") >> pred([`x`]))). % ?- show_phrase(sed(a/"a"/"b")). % ?- show_phrase(w("a*")). % ?- sed("a">>"b", `abcb`, R). % ?- sed(w(".+", A) >> pred(A, [[A,A]]), `ab`, V), smash(V). % ?- phrase(sed(w(".+", A)>> pred(A, [[A,A]])), `ab`, V), smash(V). % ?- phrase(sed((w(".", A), w(".", B)) >> pred([A,B],([C]:- append(B, A, C)))), `abc`, R), smash(R). % ?- phrase(sed((w(".", A), w(".", B)) >>append(B, A)), `abcdefghijklmn`, V), smash(V). % ?- phrase(sed(w("[afl]")>>pred([[]])), `abcdefghijklmn`, V), smash(V). % ?- phrase(sed(wl("\\\\[a-zA-Z]*")>>pred([[]])), `\\abcdefghijklmn`, V), smash(V). % ?- phrase(sed(w("a")>>pred([`x`])), `abaaa`, V), smash(V). % ?- phrase(sed( s/ "a" / "x"), `aaabbb`, R), smash(R). % ?- phrase(sed(a/ "a" / "hello"), ` a a `, R), smash(R). % ?- phrase(sed(wl/ "a" / "hello " / " world"), ` a a `, R), smash(R). % ?- phrase((=), [a,b], X). % ?- let_w(X, ".*"), phrase(X, `abc`, R). % ?- let_wd(X, ".*"), call(X, A, [], `abc`, R). % ?- let_wl(X, ".*"), phrase(X, `abc`, R). % ?- let_wld(X, ".*"), call(X, A, [], `abc`, R). % ?- module(mpac). % ?- let_sed(X, (w("a") >> =([]))), call(X, `abac`, S), smash(S, S0). % ?- let_sed(X, (w("a") >> =([]))), call(X, `abac`, S), smash(S). % ?- let_sed(X, ([A,B]^(w("a", A), w("b", B))>>append(B, A))), call(X, `abab`, S), smash(S). % ?- let_sed(X, ((w("a", A), w("b", B))>>append(B, A))), call(X, `abab`, S), smash(S). % ?- let_sed(X, (s/"a"/"x")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (b/"a"/"x")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (a/ "a" / "x")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (d/"a")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (a/"a"/ "xxx")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (d/"a")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (w/"a"/"xxx"/"yyy")), call(X, `abac`, S), smash(S). % ?- let_sed(X, (d/"a")), call(X, `abac`, S), smash(S). % ?- phrase(unix_sed(wl/("a", X)/"hello " / " world"), ` a a `, R), smash(R). % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ intentional error.