Local Open Scope logic_base.
Local Open Scope syntax.
Local Open Scope kripke_model.
Section TruthLemma.
Context {L: Language}
{minL: MinimunLanguage L}
{pL: PropositionalLanguage L}
{Gamma: ProofTheory L}
{bSC: BasicSequentCalculus L Gamma}
{minSC: MinimunSequentCalculus L Gamma}
{ipSC: IntuitionisticPropositionalSequentCalculus L Gamma}
{cpSC: ClassicalPropositionalSequentCalculus L Gamma}
{MD: Model}
{kMD: KripkeModel MD}
{M: Kmodel}
{SM: Semantics L MD}
{tminSM: TrivialMinimunSemantics L MD SM}
{tpSM: TrivialPropositionalSemantics L MD SM}.
Context (cP: context -> Prop)
(rel: bijection (Kworlds M) (sig cP)).
Context (AL_MC: at_least (maximal consistent) cP).

(* Specifications: *)
Lemma truth_lemma_falsep:
forall m Phi, rel m Phi -> (KRIPKE: M, m |= falsep <-> proj1_sig Phi falsep).
Lemma truth_lemma_andp
(x y: expr)
(IHx: forall m Phi, rel m Phi -> (KRIPKE: M, m |= x <-> proj1_sig Phi x))
(IHy: forall m Phi, rel m Phi -> (KRIPKE: M, m |= y <-> proj1_sig Phi y)):
forall m Phi, rel m Phi -> (KRIPKE: M, m |= x && y <-> proj1_sig Phi (x && y)).
Lemma truth_lemma_orp
(x y: expr)
(IHx: forall m Phi, rel m Phi -> (KRIPKE: M, m |= x <-> proj1_sig Phi x))
(IHy: forall m Phi, rel m Phi -> (KRIPKE: M, m |= y <-> proj1_sig Phi y)):
forall m Phi, rel m Phi -> (KRIPKE: M, m |= x || y <-> proj1_sig Phi (x || y)).
Lemma truth_lemma_impp
(x y: expr)
(IHx: forall m Phi, rel m Phi -> (KRIPKE: M, m |= x <-> proj1_sig Phi x))
(IHy: forall m Phi, rel m Phi -> (KRIPKE: M, m |= y <-> proj1_sig Phi y)):
forall m Phi, rel m Phi -> (KRIPKE: M, m |= x --> y <-> proj1_sig Phi (x --> y)).