unfold IsNotFree
D : Type
I : Interpretation D
M : MetaValuation D
Γ : List (VarName × MetaVarName)
v : VarName
X : DefName
xs : List VarName
E_hd : Definition
E_tl : List Definition
h1 : v ∉ xs
h2 : ∀ (X : MetaVarName), (v, X) ∈ Γ → ∀ (V : Valuation D) (d : D), M X V ↔ M X (Function.updateITE V v d)
E_ih :
  (∀ (X : MetaVarName), (v, X) ∈ Γ → ∀ (V : Valuation D) (d : D), M X V ↔ M X (Function.updateITE V v d)) →
    ∀ (V : Valuation D) (d : D),
      Holds D I V M E_tl (def_ X xs) ↔ Holds D I (Function.updateITE V v d) M E_tl (def_ X xs)
⊢ IsNotFree D I M (E_hd :: E_tl) (def_ X xs) v
D : Type
I : Interpretation D
M : MetaValuation D
Γ : List (VarName × MetaVarName)
v : VarName
X : DefName
xs : List VarName
E_hd : Definition
E_tl : List Definition
h1 : v ∉ xs
h2 : ∀ (X : MetaVarName), (v, X) ∈ Γ → ∀ (V : Valuation D) (d : D), M X V ↔ M X (Function.updateITE V v d)
E_ih :
  (∀ (X : MetaVarName), (v, X) ∈ Γ → ∀ (V : Valuation D) (d : D), M X V ↔ M X (Function.updateITE V v d)) →
    ∀ (V : Valuation D) (d : D),
      Holds D I V M E_tl (def_ X xs) ↔ Holds D I (Function.updateITE V v d) M E_tl (def_ X xs)
⊢ ∀ (V : Valuation D) (d : D),
    Holds D I V M (E_hd :: E_tl) (def_ X xs) ↔ Holds D I (Function.updateITE V v d) M (E_hd :: E_tl) (def_ X xs)