factored out IntroductionRule