AddnilL;apply weakening. apply H.
assumption.
Qed.
(* This tactic applies prov_impl in IH (apply prov_impl in IH doesn't work, because I want to keep the Γ quantified)*)
Ltac prov_impl_in IH := let H := fresh "K" in
try (remember (prov_impl IH) as H eqn:HeqH;clear IH HeqH).
(** Soundness *)

Theorem Soundness_general : forall A Γ, Γ ⊢ A -> Γ ⊨ A.
intros A Γ H0 v;induction H0;simpl;intros;auto;
try simpl in IHNc;try simpl in IHNc1;try simpl in IHNc2;
case_bool v A;try (case_bool v B;fail);
try (apply IHNc||apply IHNc2;prove_satisfaction);
case_bool v B;apply IHNc3;prove_satisfaction.