#[local] Infix " \in " := E.In.
#[local] Infix " \subseteq " := E.isSubsetOf.
#[local] Notation In := List.In.
#[local] Hint Resolve E.insert_monotonic : core.
Proof with (simpl in *; tauto) || eauto with *.
ii. eapply ENTAILS1; done!.
Qed.
Proof with eauto.
induction INFERS.
- eapply ByAssumption_preserves with (C := C)...
- eapply ContradictionI_preserves with (A := A)...
- eapply ContradictionE_preserves with (A := A)...
- eapply NegationI_preserves with (A := A)...
- eapply NegationE_preserves with (A := A)...
- eapply ConjunctionI_preserves with (A := A) (B := B)...
- eapply ConjunctionE1_preserves with (A := A) (B := B)...
- eapply ConjunctionE2_preserves with (A := A) (B := B)...
- eapply DisjunctionI1_preserves with (A := A) (B := B)...
- eapply DisjunctionI2_preserves with (A := A) (B := B)...
- eapply DisjunctionE_preserves with (A := A) (B := B) (C := C)...
- eapply ImplicationI_preserves with (A := A) (B := B)...
- eapply ImplicationE_preserves with (A := A) (B := B)...
- eapply BiconditionalI_preserves with (A := A) (B := B)...
- eapply BiconditionalE1_preserves with (A := A) (B := B)...
- eapply BiconditionalE2_preserves with (A := A) (B := B)...
Qed.

Lemma hasModel_ifConsistent (X : ensemble formula)
(CONSISTENT : X ⊬ ContradictionF)
: X \subseteq MaximallyConsistentSet X /\ is_structure (MaximallyConsistentSet X).