message: prob tracking
diff: @@ -352,17 +352,13 @@ function evalFunc(func: bril.Function, buffer: any[][],
  {
  let best : PtMap<PtMap<number>> = new PtMap();
  let finished = new Set<string>(); // stringifiied points.
  - // Don't want to override this as well.
  + // Don't want to re-define equality here as well, so this is not type safe.
  - // let cur_pt : ProgPt = [0, new Map()];
  // let paths : PointedPath[] = [
  // { head : [cur_pt, 1], hist : new Path([[cur_pt, [undefined, 1]]]) } ];
  - //
  - // let probs : Map<ProgPt, number> = new Map();
  - // // also, shift.
  - // let finished : Map<Env, number> = new Map();
  +
  + let probs : PtMap<number> = new PtMap();
  let missing_prob = 0;
  - //let transition : Map< ProgPt, Map<ProgPt, number>> = new Map();
  // let n_instrs_at_once = 1;
  @@ -399,6 +395,11 @@ function evalFunc(func: bril.Function, buffer: any[][],
  }
  }
  + // update probs
  + for ( let p of twohop.keys() ) {
  + probs.set(p, Math.min(probs.getOr(p, 1), twohop.get(p)!));
  + }
  +
  // limit computation!
  if( twohop.has(current_pt) ) {
  let factor = 1 / (1 - twohop.get(current_pt)!);
  @@ -431,8 +432,7 @@ function evalFunc(func: bril.Function, buffer: any[][],
  }
  else {
  if ( (!maxQLen || (queue.size() < maxQLen-1)) &&
  - ( tol <= 0 || !best.has(START) ||
  - (best.get(START)!.getOr(current_pt, 1) > tol ))
  + ( tol <= 0 || (probs.getOr(current_pt, 1) > tol ))
  ) {
  best.set(current_pt, twohop);
  for (let k of twohop.keys() ) {
  