shortestPath(dijkstra_findall_sort, "acbdef").
cost(dijkstra_findall_sort, 13).

clause(12,
       dijkstra(var('Start'), var('Goal'), var('Path'), var('Cost')),
       (dijkstra_queue([[0, var('Start')]], var('Goal'), [], var('Revpath'), var('Cost')),
        reverse(var('Revpath'), var('Path')))).
clause(13,
       dijkstra_queue([[var('Cost'), var('Goal') | var('Path')] | anonymous(1)], var('Goal'), anonymous(2), [var('Goal') | var('Path')], var('Cost')),
       true).
clause(14,
       dijkstra_queue([[var('Cost'), var('Node') | var('Path')] | var('Queue')], var('Goal'), var('Visited'), var('Resultpath'), var('Resultcost')),
       (findall([var('Newcost'), var('Neighbor'), var('Node') | var('Path')], (edge(var('Node'), var('Neighbor'), var('Weight')), \+ member(var('Neighbor'), var('Visited')), var('Newcost') is var('Cost') + var('Weight')), var('Neighbors')),
        append(var('Queue'), var('Neighbors'), var('Newqueue')),
        sort(var('Newqueue'), var('Sortedqueue')),
        dijkstra_queue(var('Sortedqueue'), var('Goal'), [var('Node') | var('Visited')], var('Resultpath'), var('Resultcost')))).
clause(15,
       shortestPath(dijkstra_findall_sort, var('Path')),
       once(dijkstra(a, f, var('Path'), anonymous(1)))).
clause(16,
       cost(dijkstra_findall_sort, var('Cost')),
       once(dijkstra(a, f, anonymous(1), var('Cost')))).

step(shortestPath(dijkstra_findall_sort, "acbdef"),
     rule(15),
     ['Path' = "acbdef"],
     [once(dijkstra(a, f, "acbdef", 13))]).
step(once(dijkstra(a, f, "acbdef", 13)), control, [], [dijkstra(a, f, "acbdef", 13)]).
step(dijkstra(a, f, "acbdef", 13),
     rule(12),
     ['Start' = a, 'Goal' = f, 'Path' = "acbdef", 'Cost' = 13, 'Revpath' = "fedbca"],
     [dijkstra_queue([[0, a]], f, [], "fedbca", 13), reverse("fedbca", "acbdef")]).
step(dijkstra_queue([[0, a]], f, [], "fedbca", 13),
     rule(14),
     ['Cost' = 0,
      'Node' = a,
      'Path' = [],
      'Queue' = [],
      'Goal' = f,
      'Visited' = [],
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[4|"ba"], [2|"ca"]],
      'Newqueue' = [[4|"ba"], [2|"ca"]],
      'Sortedqueue' = [[2|"ca"], [4|"ba"]]],
     [findall([Newcost, Neighbor, a], (edge(a, Neighbor, Weight), \+ member(Neighbor, []), Newcost is 0 + Weight), [[4|"ba"], [2|"ca"]]),
      append([], [[4|"ba"], [2|"ca"]], [[4|"ba"], [2|"ca"]]),
      sort([[4|"ba"], [2|"ca"]], [[2|"ca"], [4|"ba"]]),
      dijkstra_queue([[2|"ca"], [4|"ba"]], f, "a", "fedbca", 13)]).
step(findall([Newcost, Neighbor, a], (edge(a, Neighbor, Weight), \+ member(Neighbor, []), Newcost is 0 + Weight), [[4|"ba"], [2|"ca"]]),
     collected,
     [],
     []).
step(append([], [[4|"ba"], [2|"ca"]], [[4|"ba"], [2|"ca"]]), builtin, [], []).
step(sort([[4|"ba"], [2|"ca"]], [[2|"ca"], [4|"ba"]]), builtin, [], []).
step(dijkstra_queue([[2|"ca"], [4|"ba"]], f, "a", "fedbca", 13),
     rule(14),
     ['Cost' = 2,
      'Node' = c,
      'Path' = "a",
      'Queue' = [[4|"ba"]],
      'Goal' = f,
      'Visited' = "a",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[10|"dca"], [12|"eca"], [3|"bca"]],
      'Newqueue' = [[4|"ba"], [10|"dca"], [12|"eca"], [3|"bca"]],
      'Sortedqueue' = [[3|"bca"], [4|"ba"], [10|"dca"], [12|"eca"]]],
     [findall([Newcost, Neighbor|"ca"], (edge(c, Neighbor, Weight), \+ member(Neighbor, "a"), Newcost is 2 + Weight), [[10|"dca"], [12|"eca"], [3|"bca"]]),
      append([[4|"ba"]], [[10|"dca"], [12|"eca"], [3|"bca"]], [[4|"ba"], [10|"dca"], [12|"eca"], [3|"bca"]]),
      sort([[4|"ba"], [10|"dca"], [12|"eca"], [3|"bca"]], [[3|"bca"], [4|"ba"], [10|"dca"], [12|"eca"]]),
      dijkstra_queue([[3|"bca"], [4|"ba"], [10|"dca"], [12|"eca"]], f, "ca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"ca"], (edge(c, Neighbor, Weight), \+ member(Neighbor, "a"), Newcost is 2 + Weight), [[10|"dca"], [12|"eca"], [3|"bca"]]),
     collected,
     [],
     []).
step(append([[4|"ba"]], [[10|"dca"], [12|"eca"], [3|"bca"]], [[4|"ba"], [10|"dca"], [12|"eca"], [3|"bca"]]),
     builtin,
     [],
     []).
step(sort([[4|"ba"], [10|"dca"], [12|"eca"], [3|"bca"]], [[3|"bca"], [4|"ba"], [10|"dca"], [12|"eca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[3|"bca"], [4|"ba"], [10|"dca"], [12|"eca"]], f, "ca", "fedbca", 13),
     rule(14),
     ['Cost' = 3,
      'Node' = b,
      'Path' = "ca",
      'Queue' = [[4|"ba"], [10|"dca"], [12|"eca"]],
      'Goal' = f,
      'Visited' = "ca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[8|"dbca"]],
      'Newqueue' = [[4|"ba"], [10|"dca"], [12|"eca"], [8|"dbca"]],
      'Sortedqueue' = [[4|"ba"], [8|"dbca"], [10|"dca"], [12|"eca"]]],
     [findall([Newcost, Neighbor|"bca"], (edge(b, Neighbor, Weight), \+ member(Neighbor, "ca"), Newcost is 3 + Weight), [[8|"dbca"]]),
      append([[4|"ba"], [10|"dca"], [12|"eca"]], [[8|"dbca"]], [[4|"ba"], [10|"dca"], [12|"eca"], [8|"dbca"]]),
      sort([[4|"ba"], [10|"dca"], [12|"eca"], [8|"dbca"]], [[4|"ba"], [8|"dbca"], [10|"dca"], [12|"eca"]]),
      dijkstra_queue([[4|"ba"], [8|"dbca"], [10|"dca"], [12|"eca"]], f, "bca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"bca"], (edge(b, Neighbor, Weight), \+ member(Neighbor, "ca"), Newcost is 3 + Weight), [[8|"dbca"]]),
     collected,
     [],
     []).
step(append([[4|"ba"], [10|"dca"], [12|"eca"]], [[8|"dbca"]], [[4|"ba"], [10|"dca"], [12|"eca"], [8|"dbca"]]),
     builtin,
     [],
     []).
step(sort([[4|"ba"], [10|"dca"], [12|"eca"], [8|"dbca"]], [[4|"ba"], [8|"dbca"], [10|"dca"], [12|"eca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[4|"ba"], [8|"dbca"], [10|"dca"], [12|"eca"]], f, "bca", "fedbca", 13),
     rule(14),
     ['Cost' = 4,
      'Node' = b,
      'Path' = "a",
      'Queue' = [[8|"dbca"], [10|"dca"], [12|"eca"]],
      'Goal' = f,
      'Visited' = "bca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[9|"dba"]],
      'Newqueue' = [[8|"dbca"], [10|"dca"], [12|"eca"], [9|"dba"]],
      'Sortedqueue' = [[8|"dbca"], [9|"dba"], [10|"dca"], [12|"eca"]]],
     [findall([Newcost, Neighbor|"ba"], (edge(b, Neighbor, Weight), \+ member(Neighbor, "bca"), Newcost is 4 + Weight), [[9|"dba"]]),
      append([[8|"dbca"], [10|"dca"], [12|"eca"]], [[9|"dba"]], [[8|"dbca"], [10|"dca"], [12|"eca"], [9|"dba"]]),
      sort([[8|"dbca"], [10|"dca"], [12|"eca"], [9|"dba"]], [[8|"dbca"], [9|"dba"], [10|"dca"], [12|"eca"]]),
      dijkstra_queue([[8|"dbca"], [9|"dba"], [10|"dca"], [12|"eca"]], f, "bbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"ba"], (edge(b, Neighbor, Weight), \+ member(Neighbor, "bca"), Newcost is 4 + Weight), [[9|"dba"]]),
     collected,
     [],
     []).
step(append([[8|"dbca"], [10|"dca"], [12|"eca"]], [[9|"dba"]], [[8|"dbca"], [10|"dca"], [12|"eca"], [9|"dba"]]),
     builtin,
     [],
     []).
step(sort([[8|"dbca"], [10|"dca"], [12|"eca"], [9|"dba"]], [[8|"dbca"], [9|"dba"], [10|"dca"], [12|"eca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[8|"dbca"], [9|"dba"], [10|"dca"], [12|"eca"]], f, "bbca", "fedbca", 13),
     rule(14),
     ['Cost' = 8,
      'Node' = d,
      'Path' = "bca",
      'Queue' = [[9|"dba"], [10|"dca"], [12|"eca"]],
      'Goal' = f,
      'Visited' = "bbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[10|"edbca"], [14|"fdbca"]],
      'Newqueue' = [[9|"dba"], [10|"dca"], [12|"eca"], [10|"edbca"], [14|"fdbca"]],
      'Sortedqueue' = [[9|"dba"], [10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]]],
     [findall([Newcost, Neighbor|"dbca"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "bbca"), Newcost is 8 + Weight), [[10|"edbca"], [14|"fdbca"]]),
      append([[9|"dba"], [10|"dca"], [12|"eca"]], [[10|"edbca"], [14|"fdbca"]], [[9|"dba"], [10|"dca"], [12|"eca"], [10|"edbca"], [14|"fdbca"]]),
      sort([[9|"dba"], [10|"dca"], [12|"eca"], [10|"edbca"], [14|"fdbca"]], [[9|"dba"], [10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]]),
      dijkstra_queue([[9|"dba"], [10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]], f, "dbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"dbca"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "bbca"), Newcost is 8 + Weight), [[10|"edbca"], [14|"fdbca"]]),
     collected,
     [],
     []).
step(append([[9|"dba"], [10|"dca"], [12|"eca"]], [[10|"edbca"], [14|"fdbca"]], [[9|"dba"], [10|"dca"], [12|"eca"], [10|"edbca"], [14|"fdbca"]]),
     builtin,
     [],
     []).
step(sort([[9|"dba"], [10|"dca"], [12|"eca"], [10|"edbca"], [14|"fdbca"]], [[9|"dba"], [10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[9|"dba"], [10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]], f, "dbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 9,
      'Node' = d,
      'Path' = "ba",
      'Queue' = [[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]],
      'Goal' = f,
      'Visited' = "dbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[11|"edba"], [15|"fdba"]],
      'Newqueue' = [[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"], [11|"edba"], [15|"fdba"]],
      'Sortedqueue' = [[10|"dca"], [10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]]],
     [findall([Newcost, Neighbor|"dba"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "dbbca"), Newcost is 9 + Weight), [[11|"edba"], [15|"fdba"]]),
      append([[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]], [[11|"edba"], [15|"fdba"]], [[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"], [11|"edba"], [15|"fdba"]]),
      sort([[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"], [11|"edba"], [15|"fdba"]], [[10|"dca"], [10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]]),
      dijkstra_queue([[10|"dca"], [10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]], f, "ddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"dba"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "dbbca"), Newcost is 9 + Weight), [[11|"edba"], [15|"fdba"]]),
     collected,
     [],
     []).
step(append([[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"]], [[11|"edba"], [15|"fdba"]], [[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"], [11|"edba"], [15|"fdba"]]),
     builtin,
     [],
     []).
step(sort([[10|"dca"], [10|"edbca"], [12|"eca"], [14|"fdbca"], [11|"edba"], [15|"fdba"]], [[10|"dca"], [10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[10|"dca"], [10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]], f, "ddbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 10,
      'Node' = d,
      'Path' = "ca",
      'Queue' = [[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]],
      'Goal' = f,
      'Visited' = "ddbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[12|"edca"], [16|"fdca"]],
      'Newqueue' = [[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"], [12|"edca"], [16|"fdca"]],
      'Sortedqueue' = [[10|"edbca"], [11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]],
     [findall([Newcost, Neighbor|"dca"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "ddbbca"), Newcost is 10 + Weight), [[12|"edca"], [16|"fdca"]]),
      append([[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]], [[12|"edca"], [16|"fdca"]], [[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"], [12|"edca"], [16|"fdca"]]),
      sort([[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"], [12|"edca"], [16|"fdca"]], [[10|"edbca"], [11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]),
      dijkstra_queue([[10|"edbca"], [11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], f, "dddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"dca"], (edge(d, Neighbor, Weight), \+ member(Neighbor, "ddbbca"), Newcost is 10 + Weight), [[12|"edca"], [16|"fdca"]]),
     collected,
     [],
     []).
step(append([[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"]], [[12|"edca"], [16|"fdca"]], [[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"], [12|"edca"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(sort([[10|"edbca"], [11|"edba"], [12|"eca"], [14|"fdbca"], [15|"fdba"], [12|"edca"], [16|"fdca"]], [[10|"edbca"], [11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[10|"edbca"], [11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], f, "dddbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 10,
      'Node' = e,
      'Path' = "dbca",
      'Queue' = [[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]],
      'Goal' = f,
      'Visited' = "dddbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[13|"fedbca"]],
      'Newqueue' = [[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [13|"fedbca"]],
      'Sortedqueue' = [[11|"edba"], [12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]],
     [findall([Newcost, Neighbor|"edbca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "dddbbca"), Newcost is 10 + Weight), [[13|"fedbca"]]),
      append([[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], [[13|"fedbca"]], [[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [13|"fedbca"]]),
      sort([[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [13|"fedbca"]], [[11|"edba"], [12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]),
      dijkstra_queue([[11|"edba"], [12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], f, "edddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"edbca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "dddbbca"), Newcost is 10 + Weight), [[13|"fedbca"]]),
     collected,
     [],
     []).
step(append([[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], [[13|"fedbca"]], [[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [13|"fedbca"]]),
     builtin,
     [],
     []).
step(sort([[11|"edba"], [12|"eca"], [12|"edca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [13|"fedbca"]], [[11|"edba"], [12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[11|"edba"], [12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], f, "edddbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 11,
      'Node' = e,
      'Path' = "dba",
      'Queue' = [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]],
      'Goal' = f,
      'Visited' = "edddbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[14|"fedba"]],
      'Newqueue' = [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [14|"fedba"]],
      'Sortedqueue' = [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]]],
     [findall([Newcost, Neighbor|"edba"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "edddbbca"), Newcost is 11 + Weight), [[14|"fedba"]]),
      append([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], [[14|"fedba"]], [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [14|"fedba"]]),
      sort([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [14|"fedba"]], [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]]),
      dijkstra_queue([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]], f, "eedddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"edba"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "edddbbca"), Newcost is 11 + Weight), [[14|"fedba"]]),
     collected,
     [],
     []).
step(append([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"]], [[14|"fedba"]], [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [14|"fedba"]]),
     builtin,
     [],
     []).
step(sort([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [15|"fdba"], [16|"fdca"], [14|"fedba"]], [[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[12|"eca"], [12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]], f, "eedddbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 12,
      'Node' = e,
      'Path' = "ca",
      'Queue' = [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]],
      'Goal' = f,
      'Visited' = "eedddbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[15|"feca"]],
      'Newqueue' = [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"], [15|"feca"]],
      'Sortedqueue' = [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]]],
     [findall([Newcost, Neighbor|"eca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "eedddbbca"), Newcost is 12 + Weight), [[15|"feca"]]),
      append([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]], [[15|"feca"]], [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"], [15|"feca"]]),
      sort([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"], [15|"feca"]], [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]]),
      dijkstra_queue([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]], f, "eeedddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"eca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "eedddbbca"), Newcost is 12 + Weight), [[15|"feca"]]),
     collected,
     [],
     []).
step(append([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"]], [[15|"feca"]], [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"], [15|"feca"]]),
     builtin,
     [],
     []).
step(sort([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [16|"fdca"], [15|"feca"]], [[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[12|"edca"], [13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]], f, "eeedddbbca", "fedbca", 13),
     rule(14),
     ['Cost' = 12,
      'Node' = e,
      'Path' = "dca",
      'Queue' = [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]],
      'Goal' = f,
      'Visited' = "eeedddbbca",
      'Resultpath' = "fedbca",
      'Resultcost' = 13,
      'Neighbors' = [[15|"fedca"]],
      'Newqueue' = [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"], [15|"fedca"]],
      'Sortedqueue' = [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [15|"fedca"], [16|"fdca"]]],
     [findall([Newcost, Neighbor|"edca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "eeedddbbca"), Newcost is 12 + Weight), [[15|"fedca"]]),
      append([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]], [[15|"fedca"]], [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"], [15|"fedca"]]),
      sort([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"], [15|"fedca"]], [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [15|"fedca"], [16|"fdca"]]),
      dijkstra_queue([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [15|"fedca"], [16|"fdca"]], f, "eeeedddbbca", "fedbca", 13)]).
step(findall([Newcost, Neighbor|"edca"], (edge(e, Neighbor, Weight), \+ member(Neighbor, "eeedddbbca"), Newcost is 12 + Weight), [[15|"fedca"]]),
     collected,
     [],
     []).
step(append([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"]], [[15|"fedca"]], [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"], [15|"fedca"]]),
     builtin,
     [],
     []).
step(sort([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [16|"fdca"], [15|"fedca"]], [[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [15|"fedca"], [16|"fdca"]]),
     builtin,
     [],
     []).
step(dijkstra_queue([[13|"fedbca"], [14|"fdbca"], [14|"fedba"], [15|"fdba"], [15|"feca"], [15|"fedca"], [16|"fdca"]], f, "eeeedddbbca", "fedbca", 13),
     fact(13),
     ['Cost' = 13, 'Goal' = f, 'Path' = "edbca"],
     []).
step(reverse("fedbca", "acbdef"), builtin, [], []).
step(cost(dijkstra_findall_sort, 13),
     rule(16),
     ['Cost' = 13],
     [once(dijkstra(a, f, "acbdef", 13))]).
