Section PROPOSITONAL_LOGIC.
Definition propLetter : Set := nat.
Inductive formula : Set :=
| AtomF (i : propLetter) : formula
| ContradictionF : formula
| NegationF (p1 : formula) : formula
| ConjunctionF (p1 : formula) (p2 : formula) : formula
| DisjunctionF (p1 : formula) (p2 : formula) : formula
| ImplicationF (p1 : formula) (p2 : formula) : formula
| BiconditionalF (p1 : formula) (p2 : formula) : formula.
#[global]
Instance propLetter_hasEqDec : hasEqDec propLetter :=
Nat.eq_dec.
#[global]
Instance formula_hasEqDec
: hasEqDec formula.
Definition is_structure (Gamma : ensemble formula) : Prop :=
forall p : formula, p \in Gamma <-> evalFormula (E.preimage AtomF Gamma) p.
Proof with repeat ((now left) || right).
eapply NegationE, ContradictionI.
- eapply DisjunctionI2, NegationI, ContradictionI.
+ eapply DisjunctionI1, ByAssumption...
+ eapply ByAssumption...
- eapply ByAssumption...
Qed.

Lemma Cut_property Gamma A B
(INFERS : Gamma ⊢ A)
(IMPLY : E.insert A Gamma ⊢ B)
: Gamma ⊢ B.