Section ND_def.
Context {Σ_funcs : funcs_signature}.
Context {Σ_preds : preds_signature}.
Reserved Notation "A ⊢ phi" (at level 61).
(* ** Definition *)
Implicit Type p : peirce.
Implicit Type ff : falsity_flag.
Inductive prv : forall (ff : falsity_flag) (p : peirce), list form -> form -> Prop :=
| II {ff} {p} A phi psi : phi::A ⊢ psi -> A ⊢ phi --> psi
| IE {ff} {p} A phi psi : A ⊢ phi --> psi -> A ⊢ phi -> A ⊢ psi
| AllI {ff} {p} A phi : map (subst_form ↑) A ⊢ phi -> A ⊢ ∀ phi
| AllE {ff} {p} A t phi : A ⊢ ∀ phi -> A ⊢ phi [t..]
| Exp {p} A phi : prv p A falsity -> prv p A phi
| Ctx {ff} {p} A phi : phi el A -> A ⊢ phi
| Pc {ff} A phi psi : prv class A (((phi --> psi) --> phi) --> phi)
where "A ⊢ phi" := (prv _ A phi).
Arguments prv {_} _ _.
Context {ff : falsity_flag}.
Context {p : peirce}.

Lemma impl_prv A B phi :
(rev B ++ A) ⊢ phi -> A ⊢ (B ==> phi).