:: (p -> q) -> (q -> r) -> p -> r package:strongweak