Section Logic_Rules.
Variable L : Language.
Let Formula := Formula L.
Let Formulas := Formulas L.
Let System := System L.
Let Term := Term L.
Let Terms := Terms L.
Let var := var L.
Let apply := apply L.
Let equal := equal L.
Let atomic := atomic L.
Let impH := impH L.
Let notH := notH L.
Let forallH := forallH L.
Let orH := orH L.
Let andH := andH L.
Let existH := existH L.
Let iffH := iffH L.
Let ifThenElseH := ifThenElseH L.
Let Prf := Prf L.
Let SysPrf := SysPrf L.

(* Specifications: *)
Lemma Axm :
forall (T : System) (f : Formula), mem _ T f -> SysPrf T f.
Lemma sysExtend :
forall (T U : System) (f : Formula),
Included _ T U -> SysPrf T f -> SysPrf U f.
Lemma sysWeaken :
forall (T : System) (f g : Formula), SysPrf T f -> SysPrf (Ensembles.Add _ T g) f.
Lemma impI :
forall (T : System) (f g : Formula),
SysPrf (Ensembles.Add _ T g) f -> SysPrf T (impH g f).
Lemma impE :
forall (T : System) (f g : Formula),
SysPrf T (impH g f) -> SysPrf T g -> SysPrf T f.
Lemma contradiction :
forall (T : System) (f g : Formula),
SysPrf T f -> SysPrf T (notH f) -> SysPrf T g.
Lemma nnE :
forall (T : System) (f : Formula), SysPrf T (notH (notH f)) -> SysPrf T f.
Lemma noMiddle : forall (T : System) (f : Formula), SysPrf T (orH (notH f) f).
Lemma nnI :
forall (T : System) (f : Formula), SysPrf T f -> SysPrf T (notH (notH f)).
Lemma cp1 :
forall (T : System) (f g : Formula),
SysPrf T (impH (notH f) (notH g)) -> SysPrf T (impH g f).
Lemma cp2 :
forall (T : System) (f g : Formula),
SysPrf T (impH g f) -> SysPrf T (impH (notH f) (notH g)).
Lemma orI1 :
forall (T : System) (f g : Formula), SysPrf T f -> SysPrf T (orH f g).
Lemma orI2 :
forall (T : System) (f g : Formula), SysPrf T g -> SysPrf T (orH f g).
Lemma orE :
forall (T : System) (f g h : Formula),
SysPrf T (orH f g) ->
SysPrf T (impH f h) -> SysPrf T (impH g h) -> SysPrf T h.
Lemma orSys :
forall (T : System) (f g h : Formula),
SysPrf (Ensembles.Add _ T f) h -> SysPrf (Ensembles.Add _ T g) h -> SysPrf (Ensembles.Add _ T (orH f g)) h.
Lemma andI :
forall (T : System) (f g : Formula),
SysPrf T f -> SysPrf T g -> SysPrf T (andH f g).
Lemma andE1 :
forall (T : System) (f g : Formula), SysPrf T (andH f g) -> SysPrf T f.
Lemma andE2 :
forall (T : System) (f g : Formula), SysPrf T (andH f g) -> SysPrf T g.
Lemma iffI :
forall (T : System) (f g : Formula),
SysPrf T (impH f g) -> SysPrf T (impH g f) -> SysPrf T (iffH f g).
Lemma iffE1 :
forall (T : System) (f g : Formula),
SysPrf T (iffH f g) -> SysPrf T (impH f g).
Lemma iffE2 :
forall (T : System) (f g : Formula),
SysPrf T (iffH f g) -> SysPrf T (impH g f).
Lemma forallI :
forall (T : System) (f : Formula) (v : nat),
~ In_freeVarSys L v T -> SysPrf T f -> SysPrf T (forallH v f).
Lemma forallE :
forall (T : System) (f : Formula) (v : nat) (t : Term),
SysPrf T (forallH v f) -> SysPrf T (substituteFormula L f v t).
Lemma forallSimp :
forall (T : System) (f : Formula) (v : nat),
SysPrf T (forallH v f) -> SysPrf T f.
Lemma existI :
forall (T : System) (f : Formula) (v : nat) (t : Term),
SysPrf T (substituteFormula L f v t) -> SysPrf T (existH v f).
Lemma existE :
forall (T : System) (f g : Formula) (v : nat),
~ In_freeVarSys L v T ->
~ In v (freeVarFormula L g) ->
SysPrf T (existH v f) -> SysPrf T (impH f g) -> SysPrf T g.
Lemma existSimp :
forall (T : System) (f : Formula) (v : nat),
SysPrf T f -> SysPrf T (existH v f).
Lemma existSys :
forall (T : System) (f g : Formula) (v : nat),
~ In_freeVarSys L v T ->
~ In v (freeVarFormula L g) ->
SysPrf (Ensembles.Add _ T f) g -> SysPrf (Ensembles.Add _ T (existH v f)) g.