Section DerivableRulesFromSequentCalculus.
Context {L: Language}
{Gamma: ProofTheory L}
{bSC: BasicSequentCalculus L Gamma}.
Context {minL: MinimunLanguage L}
{minSC: MinimunSequentCalculus L Gamma}.

(* Specifications: *)
Lemma deduction_impp_elim: forall Phi x y,
Phi |-- impp x y ->
Union _ Phi (Singleton _ x) |-- y.
Theorem deduction_theorem:
forall (Phi: context) (x y: expr),
Union _ Phi (Singleton _ x) |-- y <->
Phi |-- x --> y.
Theorem deduction_theorem_multi_imp:
forall (Phi: context) (xs: list expr) (y: expr),
Union _ Phi (fun x => In x xs) |-- y <->
Phi |-- multi_imp xs y.
Lemma derivable_impp_refl: forall (Phi: context) (x: expr), Phi |-- x --> x.
Lemma deduction_left_impp_intros: forall (Phi: context) (x y: expr),
Phi |-- x ->
Phi |-- y --> x.
Lemma derivable_axiom1: forall (Phi: context) (x y: expr),
Phi |-- x --> y --> x.
Lemma derivable_axiom2: forall (Phi: context) (x y z: expr),
Phi |-- (x --> y --> z) --> (x --> y) --> (x --> z).
Lemma derivable_modus_ponens: forall (Phi: context) (x y: expr),
Phi |-- x --> (x --> y) --> y.
Lemma deduction_impp_trans: forall (Phi: context) (x y z: expr),
Phi |-- x --> y ->
Phi |-- y --> z ->
Phi |-- x --> z.
Lemma deduction_impp_arg_switch: forall (Phi: context) (x y z: expr),
Phi |-- x --> y --> z ->
Phi |-- y --> x --> z.