∀ {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} (x : L.Term α)
  (x_1 : {n : ℕ} → L.Functions n → L'.Term (Fin n)),
  x.substFunc x_1 =
    match x, x_1 with
    | FirstOrder.Language.var a, x => FirstOrder.Language.var a
    | FirstOrder.Language.func f ts, tf => (tf f).subst fun i => (ts i).substFunc fun {n} => tf