End Semantics.
Module SemanticsMono.
Program Definition boxp
{worlds: Type}
{R1: KI.Relation worlds}
{po_R1: PreOrder KI.Krelation}
{R2: KM.Relation worlds}
{ukmM: UpwardsClosedOrderedKripkeModel worlds}
(X: MonoEnsemble worlds): MonoEnsemble worlds :=
Semantics.boxp X.
Next Obligation.
apply (@Semantics.boxp_closed worlds R1 po_R1 R2 ukmM);
apply (proj2_sig _).
Defined.
End SemanticsMono.
Class FlatModalSemantics (L: Language) {minL: MinimunLanguage L} {mL: ModalLanguage L} (MD: Model) {kMD: KripkeModel MD} (M: Kmodel) {R1: KI.Relation (Kworlds M)} {R2: KM.Relation (Kworlds M)} (SM: Semantics L MD) : Type := {
denote_boxp: forall x, Same_set _ (Kdenotation M (boxp x)) (Semantics.boxp (Kdenotation M x))
}.

(* Specifications: *)
Lemma sat_boxp {L: Language} {minL: MinimunLanguage L} {mL: ModalLanguage L} {MD: Model} {kMD: KripkeModel MD} {M: Kmodel} {R1: KI.Relation (Kworlds M)} {R2: KM.Relation (Kworlds M)} {SM: Semantics L MD} {fmSM: FlatModalSemantics L MD M SM}: forall m x, KRIPKE: M , m |= boxp x <-> (forall n, KM.Krelation m n -> KRIPKE: M , n |= x).