Theorem: MM0.holds_coincide_meta_var
Proof state before:
case cons
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
V : Valuation D
M M' : MetaValuation D
F : Formula
h1 : ∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) F ↔ Holds D I V M' (head✝ :: tail✝) F
Tactic:
induction F generalizing V M M'
Proof state after:
case cons.meta_var_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝ : MetaVarName
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (meta_var_ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (meta_var_ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (meta_var_ a✝)

case cons.pred_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝¹ : PredName
a✝ : List VarName
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (pred_ a✝¹ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (pred_ a✝¹ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (pred_ a✝¹ a✝)

case cons.eq_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝¹ a✝ : VarName
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (eq_ a✝¹ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (eq_ a✝¹ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (eq_ a✝¹ a✝)

case cons.true_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ true_.metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) true_ ↔ Holds D I V M' (head✝ :: tail✝) true_

case cons.not_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝ : Formula
a_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D),
    (∀ (V' : Valuation D), ∀ X ∈ a✝.metaVarSet, M X V' ↔ M' X V') →
      (Holds D I V M (head✝ :: tail✝) a✝ ↔ Holds D I V M' (head✝ :: tail✝) a✝)
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ a✝.not_.metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) a✝.not_ ↔ Holds D I V M' (head✝ :: tail✝) a✝.not_

case cons.imp_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝¹ a✝ : Formula
a_ih✝¹ :
  ∀ (V : Valuation D) (M M' : MetaValuation D),
    (∀ (V' : Valuation D), ∀ X ∈ a✝¹.metaVarSet, M X V' ↔ M' X V') →
      (Holds D I V M (head✝ :: tail✝) a✝¹ ↔ Holds D I V M' (head✝ :: tail✝) a✝¹)
a_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D),
    (∀ (V' : Valuation D), ∀ X ∈ a✝.metaVarSet, M X V' ↔ M' X V') →
      (Holds D I V M (head✝ :: tail✝) a✝ ↔ Holds D I V M' (head✝ :: tail✝) a✝)
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (a✝¹.imp_ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (a✝¹.imp_ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (a✝¹.imp_ a✝)

case cons.forall_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝¹ : VarName
a✝ : Formula
a_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D),
    (∀ (V' : Valuation D), ∀ X ∈ a✝.metaVarSet, M X V' ↔ M' X V') →
      (Holds D I V M (head✝ :: tail✝) a✝ ↔ Holds D I V M' (head✝ :: tail✝) a✝)
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (forall_ a✝¹ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (forall_ a✝¹ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (forall_ a✝¹ a✝)

case cons.def_
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V : Valuation D) (M M' : MetaValuation D) (F : Formula),
    (∀ (V' : Valuation D), ∀ X ∈ F.metaVarSet, M X V' ↔ M' X V') → (Holds D I V M tail✝ F ↔ Holds D I V M' tail✝ F)
a✝¹ : DefName
a✝ : List VarName
V : Valuation D
M M' : MetaValuation D
h1 : ∀ (V' : Valuation D), ∀ X ∈ (def_ a✝¹ a✝).metaVarSet, M X V' ↔ M' X V'
⊢ Holds D I V M (head✝ :: tail✝) (def_ a✝¹ a✝) ↔ Holds D I V M' (head✝ :: tail✝) (def_ a✝¹ a✝)