public static Goal Noto(this KRunner k, params Goal[] gs) { if (gs.Length == 0) { return(k.Succeed); } if (gs.Length == 1) { return(k.If(gs[0], k.Fail, k.Succeed)); } return(k.All(gs.Select(g => k.Noto(g)).ToArray())); }