Intersection types for lambda-terms and combinators and their logics