-- Lean 4 proof step from Mathlib.RingTheory.LocalRing.Module (goal)
Goal:
R : Type u_1
M : Type u_2
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
inst_3 : IsLocalRing R
inst_4 : Flat R M
ι : Type u
v : ι → M
h :
  LinearIndependent k (M := k ⊗[R] M)
    ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v)
s : Finset ι
f : ι → R
hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0
i : ι
hi : i ∈ s
empty :
  ∀ (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ ∅, f i • v i) 0) (i : ι) (hi : Membership.mem (γ := Finset ι) ∅ i), f i = 0
insert insert₁ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ Insert.insert n s, f i • v i) 0) (i : ι) (hi : i ∈ Insert.insert n s), f i = 0
insert₂ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s), f i = 0
insert₃ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0),
    f i = 0
insert₄ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤), f i = 0
insert₅ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
    let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯;
    ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯), f i = 0
insert₆ insert₇ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
    let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯;
    ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯) (j : Fin l) (hj : IsUnit (a n_1 j)),
      f i = 0
insert₈ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
    let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯;
    ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯) (j : Fin l) (hj : IsUnit (a n_1 j)),
      let a' : (i : ι) → R := fun (i : ι) ↦
        if hi : i ∈ Insert.insert n s then a (Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) i hi) j else 0;
      ∀ (a_eq : ∀ (i : ↥(Insert.insert n s)), a i j = a' (↑i : ι)), f i = 0
insert₉ insert₁₀ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
    let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯;
    ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯) (j : Fin l) (hj : IsUnit (a n_1 j)),
      let a' : (i : ι) → R := fun (i : ι) ↦
        if hi : i ∈ Insert.insert n s then a (Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) i hi) j else 0;
      ∀ (a_eq : ∀ (i : ↥(Insert.insert n s)), a i j = a' (↑i : ι))
        (hfn : f (↑n_1 : ι) = (-∑ i ∈ s, f i * a' i) * (↑hj.unit⁻¹ : R)), f i = 0
insert₁₁ :
  ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
    (ih :
      ∀ (v : ι → M)
        (h :
          LinearIndependent k (M := k ⊗[R] M)
            ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
        (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
    (v : ι → M)
    (h :
      LinearIndependent k (M := k ⊗[R] M)
        ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
    (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
    (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
    (hay :
      ∀ (i : ↥(Insert.insert n s)),
        Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
    (hfa :
      ∀ (j : Fin l),
        Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
    (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
    let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯;
    ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n ⋯) (j : Fin l) (hj : IsUnit (a n_1 j)),
      let a' : (i : ι) → R := fun (i : ι) ↦
        if hi : i ∈ Insert.insert n s then a (Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) i hi) j else 0;
      ∀ (a_eq : ∀ (i : ↥(Insert.insert n s)), a i j = a' (↑i : ι))
        (hfn : f (↑n_1 : ι) = (-∑ i ∈ s, f i * a' i) * (↑hj.unit⁻¹ : R)),
        let c : (i : ι) → R := fun (i : ι) ↦ (-if i = (↑n_1 : ι) then 0 else a' i) * (↑hj.unit⁻¹ : R);
        LinearIndependent k (M := k ⊗[R] M)
          ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘
            (v + fun (x : ι) ↦ c x • v (↑n_1 : ι)))
⊢ f i = 0
have insert₁₂ : ∀ (n : ι) (s : Finset ι) (hn : n ∉ s)
  (ih :
    ∀ (v : ι → M)
      (h :
        LinearIndependent k (M := k ⊗[R] M)
          ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
      (hfv : Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • v i) 0) (i : ι) (hi : i ∈ s), f i = 0)
  (v : ι → M)
  (h :
    LinearIndependent k (M := k ⊗[R] M)
      ((⇑((TensorProduct.mk R k M : (a : k) → M →ₗ[R] k ⊗[R] M) 1) : (a : M) → k ⊗[R] M) ∘ v))
  (hfv : Eq.{u_2 + 1} (α := M) (∑ i : ↥(Insert.insert n s), f (↑i : ι) • v (↑i : ι)) 0) (i : ι)
  (hi : i ∈ Insert.insert n s) (l : ℕ) (a : ↥(Insert.insert n s) → Fin l → R) (y : Fin l → M)
  (hay :
    ∀ (i : ↥(Insert.insert n s)),
      Eq.{u_2 + 1} (α := M) ((fun (i : ↥(Insert.insert n s)) ↦ v (↑i : ι)) i) (∑ j : Fin l, a i j • y j))
  (hfa :
    ∀ (j : Fin l),
      Eq.{u_1 + 1} (α := R) (∑ i : ↥(Insert.insert n s), (fun (i : ↥(Insert.insert n s)) ↦ f (↑i : ι)) i * a i j) 0)
  (this : v n ∉ HSMul.hSMul (α := Ideal R) (β := Submodule R M) 𝔪 ⊤),
  let n_1 : ↥(Insert.insert n s) := Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n sorry;
  ∀ (n_def : n_1 = Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) n sorry) (j : Fin l) (hj : IsUnit (a n_1 j)),
    let a' : (i : ι) → R := fun (i : ι) ↦
      if hi : i ∈ Insert.insert n s then a (Subtype.mk (p := fun (x : ι) ↦ x ∈ Insert.insert n s) i hi) j else 0;
    ∀ (a_eq : ∀ (i : ↥(Insert.insert n s)), a i j = a' (↑i : ι))
      (hfn : f (↑n_1 : ι) = (-∑ i ∈ s, f i * a' i) * (↑hj.unit⁻¹ : R)),
      let c : (i : ι) → R := fun (i : ι) ↦ (-if i = (↑n_1 : ι) then 0 else a' i) * (↑hj.unit⁻¹ : R);
      Eq.{u_2 + 1} (α := M) (∑ i ∈ s, f i • HAdd.hAdd (β := ι → M) v (fun (x : ι) ↦ c x • v (↑n_1 : ι)) i) 0
Tactic: classical
  induction s using Finset.induction generalizing v i with
  | empty => exact (Finset.notMem_empty _ hi).elim
  | insert n s hn ih => ?_
  rw [← Finset.sum_coe_sort] at hfv
  have ⟨l, a, y, hay, hfa⟩ := Flat.isTrivialRelation_of_sum_smul_eq_zero hfv
  have : v n ∉ 𝔪 • (⊤ : Submodule R M) := by
    simpa only [← LinearMap.ker_tensorProductMk] using h.ne_zero n
  set n : ↥(insert n s) := ⟨n, Finset.mem_insert_self ..⟩ with n_def
  obtain ⟨j, hj⟩ : ∃ j, IsUnit (a n j) := by
    contrapose! this
    rw [show v n = _ from hay n]
    exact sum_mem fun _ _ ↦ Submodule.smul_mem_smul (this _) ⟨⟩
  let a' (i : ι) : R := if hi : _ then a ⟨i, hi⟩ j else 0
  have a_eq i : a i j = a' i.1 := by simp_rw [a', dif_pos i.2]
  have hfn : f n = -(∑ i ∈ s, f i * a' i) * hj.unit⁻¹ := by
    rw [← hj.mul_left_inj, mul_assoc, hj.val_inv_mul, mul_one, eq_neg_iff_add_eq_zero]
    convert! hfa j
    simp_rw [a_eq, Finset.sum_coe_sort _ (fun i ↦ f i * a' i), s.sum_insert hn, n_def]
  let c (i : ι) : R := -(if i = n then 0 else a' i) * hj.unit⁻¹
  specialize ih (v + (c · • v n)) ?_ ?_
  · convert! (linearIndependent_add_smul_iff (c := Ideal.Quotient.mk _ ∘ c) (i := n.1) ?_).mpr h
    · ext; simp [tmul_add]; rfl
    simp_rw [Function.comp_def, c, if_pos, neg_zero, zero_mul, map_zero]
  · rw [Finset.sum_coe_sort _ (fun i ↦ f i • v i), s.sum_insert hn, add_comm, hfn] at hfv
    simp_rw [Pi.add_apply, smul_add, s.sum_add_distrib, c, smul_smul, ← s.sum_smul, ← mul_assoc,
      ← s.sum_mul, mul_neg, s.sum_neg_distrib, ← hfv]
    congr 4
    exact s.sum_congr rfl fun i hi ↦ by rw [if_neg (ne_of_mem_of_not_mem hi hn)]
  obtain hi | hi := Finset.mem_insert.mp hi
  · rw [hi, hfn, Finset.sum_eq_zero, neg_zero, zero_mul]
    intro i hi; rw [ih i hi, zero_mul]
  · exact ih i hi
Cleared hypotheses: v, h, s, hfv, i, hi