bp1 path(@S, D, D, P, C) :- #link(@S, D, C), P=f_init(S, D) bp2 path(@S, D, Z, P, C) :- #link(@S, Z, C1), path(@Z, D, Z2, P2, C2), C=f_compute(C1, C2), P=f_concatePath(S, P2). bp3 bestPathCost(@S, D, min(C)):- path(@S, D, Z, P, C). bp4 bestPath(@S, D, P, C) :- bestPathCost(@S, D, C), path(@S, D, Z, P, C). Query bestPath(@S, D, P, C).