Section ALPHA.
Let EMPTY_INTRO (ps : list (frm L)) : E.fromList ps \subseteq E.empty -> ps = [] :=
match ps with
| [] => fun _ => eq_refl
| p :: ps => fun SUBSET =>
match SUBSET p (or_introl eq_refl) with
end
end.
End ALPHA.
#[global]
Add Parametric Morphism
: proves with signature (eqProp ==> alpha_equiv ==> iff) as proves_alpha_comm.

Lemma for_All_I' (x : ivar) (y : ivar) (p : frm L) (Gamma : ensemble (frm L))
(NOT_FREE1 : is_not_free_in_frms y Gamma)
(NOT_FREE2 : is_not_free_in_frm y (All_frm x p))
(PROVE : Gamma \proves subst_frm (one_subst x (Var_trm y)) p)
: Gamma \proves All_frm x p.