specialize @ih i (tl ×ˢ L2) rfl (Fin.pair i j |>.cast (List.length_product ..).symm) rfl
α : Type u_1
β : Type u_2
L2 : List β
j : Fin L2.length
hd : α
tl : List α
ih :
  ∀ {i : Fin tl.length} (LL : List (α × β)),
    tl ×ˢ L2 = LL → ∀ {p : Fin LL.length}, ↑p = ↑(i.pair j) → LL.get p = (tl.get i, L2.get j)
LL : List (α × β)
hLL : (hd :: tl) ×ˢ L2 = LL
p : Fin LL.length
i : Fin tl.length
hp : ↑p = ↑(i.succ.pair j)
⊢ LL.get p = ((hd :: tl).get i.succ, L2.get j)
α : Type u_1
β : Type u_2
L2 : List β
j : Fin L2.length
hd : α
tl : List α
LL : List (α × β)
hLL : (hd :: tl) ×ˢ L2 = LL
p : Fin LL.length
i : Fin tl.length
hp : ↑p = ↑(i.succ.pair j)
ih : (tl ×ˢ L2).get (Fin.cast ⋯ (i.pair j)) = (tl.get i, L2.get j)
⊢ LL.get p = ((hd :: tl).get i.succ, L2.get j)