def combine : PSum Unit (p → q) → PSum Unit p → PSum Unit q | PSum.inr f, PSum.inr proof => PSum.inr $ f proof | _, _ => PSum.inl () def tst : String := let f : PSum Unit (True → True) := .inr id let v : PSum Unit True := .inr .intro match combine f v with | .inr _ => "inr" | .inl _ => "inl" #guard tst = "inr"