- if (StateSet.mem q self) && (* infers & trans. can start here *)
- (Formula.infer_form (self_q,self_r) qf qn form)
- then form :: (result tl)
- else result tl in
- let list_form = result list_tr in (* tran. candidates *)
+ if (StateSet.mem q (fst self)) && (* infers & trans. can start here *)
+ (Formula.infer_form self qf qn form)
+ then form :: (result self qf qn tl)
+ else result self qf qn tl in
+ let list_form =
+ try HashRun.find hashMax ((self_q,self_r),qf,qn,list_tr,lab)
+ with _ -> let res = result (self_q,self_r) qf qn list_tr in
+ HashRun.add hashMax ((self_q,self_r),qf,qn,list_tr,lab) res;
+ res in