package Ġit . uni bo . tup ro log . solve . pro blog . lib . rules Ċ Ċ import Ġit . uni bo . tup ro log . core . Scope Ċ import Ġit . uni bo . tup ro log . core . Term Ċ import Ġit . uni bo . tup ro log . solve . classic . Classic ExecutionContext Ċ import Ġit . uni bo . tup ro log . solve . pro blog . lib . Pro blog Lib Ċ import Ġit . uni bo . tup ro log . solve . pro blog . lib . knowledge . Prob Explanation Ċ import Ġit . uni bo . tup ro log . solve . pro blog . lib . knowledge . Prob Explanation Term Ċ import Ġit . uni bo . tup ro log . solve . pro blog . lib . primitive . Prob Helper Ċ import Ġit . uni bo . tup ro log . solve . rule . Rule Wrapper Ċ Ċ /** Ċ Ġ* ĠThis Ġrule Ġrepresents Ġa Ġsingle Ġgoal Ġin Ġthe Ġprob abil istic Ġresolution . ĠThe Ġfirst Ġargument Ġis Ġa Ġterm Ġrepresenting Ċ Ġ* Ġthe Ġ[ Prob Explanation ] Ġex plan ations Ġof Ġa Ġgoal 's Ġsolutions , Ġand Ġthe Ġsecond Ġargument Ġrepresents Ġthe Ġprob abil istic Ċ Ġ* Ġgoal Ġitself . ĠThe Ġrule Ġreturns Ġa Ġsequence Ġcontaining Ġall Ġthe Ġsubstitution s Ġfor Ġthe Ġgoal , Ġwhich Ġare Ċ Ġ* Ġall Ġits Ġsolutions Ġand Ġtheir Ġcorresponding Ġexplanation Ġin Ġthe Ġform Ġof Ġ[ Prob Explanation Term ]. Ċ Ġ* Ċ Ġ* ĠThe Ġcomputation Ġuses Ġregular ĠPro log ĠS LD Ġresolution Ġsemantics . ĠSolutions Ġare Ġnot Ġgrouped Ġand Ġthe Ġresolution Ċ Ġ* Ġuses Ġa Ġdepth - first Ġapproach . Ċ Ġ* Ċ Ġ* ĠThis Ġrule Ġalso Ġhandles Ġbackwards Ġcompatibility Ġwith ĠPro log . Ċ Ġ* Ċ Ġ* ĠIt Ġis Ġworth Ġmention ing Ġthat Ġno Ġprobability Ġis Ġcalculated Ġby Ġthis Ġprimitive . ĠInstead , Ġthis Ġjust Ġbundles Ġthe Ġlogic Ċ Ġ* Ġfor Ġfinding Ġprob abil istic Ġgoal Ġsolutions Ġand Ġtheir Ġexplanation . Ċ Ġ* Ċ Ġ* ĠUnder Ġthe Ġh ood , Ġthis Ġused Ġ[ Prob Helper ] Ġto Ġcompute Ġsome Ġimper ative Ġbusiness Ġlogic Ġand Ġmap Ġthe Ġgoal Ġinto Ġa Ċ Ġ* Ġmore Ġappropriate Ġform , Ġand Ġthen Ġcalls Ġit . Ċ Ġ* Ċ Ġ* Ġ@ author ĠJ ason ĠD ell al uce Ċ Ġ*/ Ċ internal Ġobject ĠProb Ġ: ĠRule Wrapper < Classic ExecutionContext >( Pro blog Lib . PRE D ICATE _ PREFIX , Ġ 2 ) Ġ{ ĊĠĠĠ Ġoverride Ġval ĠScope . head : ĠList < Term > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġkt ListOf ( var Of (" EX PL "), Ġvar Of (" GO AL ")) ĊĊĠĠĠ Ġoverride Ġval ĠScope . body : ĠTerm ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpl Ġ= Ġvar Of (" EX PL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoal Ġ= Ġvar Of (" GO AL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Goal Ġ= Ġvar Of (" NEW _ GO AL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtuple Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġatom Of (" ! "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Of (" ensure _ executable ", Ġgoal ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Of ( Prob Helper . functor , Ġexpl , Ġgoal , Ġnew Goal ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Goal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ