static BasicLogicRule curryLHS_BasicLogicRule(BasicLogicRule rule) { if (rule == null) null; while licensed { O lhs = rule.lhs; if lhs is And(O a, O b) { BasicLogicRule r = rule; rule = new BasicLogicRule(a, curryLHS(new BasicLogicRule(b, rule.rhs))); rule.trail = r.trail; } else break; } ret rule; }