Definition case_L_R (P : forall n m, t (n + m) -> Type) {n m} (p : t (n + m)) :
(forall n m (q : t n), P n m (L m q)) -> (forall n m (q : t m), P n m (R n q)) -> P n m p :=
fun HL HR => case_L_R' _ p (HL _ _) (HR _ _).

(* Specifications: *)
Lemma case_L_R'_L {n m : nat} (P : Fin.t (n + m) -> Type) (p : Fin.t n) HL HR :
case_L_R' P (Fin.L m p) HL HR = HL p.
Lemma case_L_R'_R {n m : nat} (P : Fin.t (n + m) -> Type) (p : Fin.t m) HL HR :
case_L_R' P (Fin.R n p) HL HR = HR p.
Lemma case_L_R_L (P : forall n m, t (n + m) -> Type) {n m} (p : Fin.t n) HL HR :
case_L_R P (Fin.L m p) HL HR = HL _ _ p.
Lemma case_L_R_R (P : forall n m, t (n + m) -> Type) {n m} (p : Fin.t m) HL HR :
case_L_R P (Fin.R n p) HL HR = HR _ _ p.