public static Goal AllOne(this KRunner k, object lst) { var d = k.Fresh(); return(k.Any( k.Eq(lst, null), k.All( k.Eq(lst, k.Pair(1, d)), k.Recurse(() => k.AllOne(d))))); }