Local Open Scope logic_base.
Local Open Scope kripke_model.
(* TODO: This should be reformulated. Add a typeclass called kiMD: KripkeIntuitionisticModel, so that on every model, a preorder relation is defined. *)
Class KripkeIntuitionisticSemantics (L: Language) (MD: Model) {kMD: KripkeModel MD} (M: Kmodel) {R: Relation (Kworlds M)} (SM: Semantics L MD) : Type := {
denote_closed: forall x, upwards_closed_Kdenote (Kdenotation M x)
}.

(* Specifications: *)
Lemma sat_mono {L: Language} {MD: Model} {kMD: KripkeModel MD} {M: Kmodel} {R: Relation (Kworlds M)} {SM: Semantics L MD} {kiSM: KripkeIntuitionisticSemantics L MD M SM}: forall m n x, m <= n -> KRIPKE: M , m |= x -> KRIPKE: M , n |= x.