File ProofSystemSoundness


From Coq Require Import Logic.Classical_Prop.
From MatchingLogic Require Export DerivedOperators_Semantics
                                  ProofSystem
                                  monotonic.

Import MatchingLogic.Syntax.Notations.
Import MatchingLogic.Substitution.Notations.
Import MatchingLogic.Semantics.Notations.
Import MatchingLogic.DerivedOperators_Syntax.Notations.
Import MatchingLogic.ProofSystem.Notations_private.

Section soundness.
  Open Scope ml_scope.

  Context {Σ : Signature}.

  (* soundness for prop_ex_right *)
  Lemma proof_rule_prop_ex_right_sound {m : Model} (theory : Theory) (phi psi : Pattern)
        (ρ : @Valuation Σ m):
    (well_formed (patt_imp (patt_app (patt_exists phi) psi) (patt_exists (patt_app phi psi)))) →
    (well_formed (ex, phi)%ml) → (@well_formed Σ psi) →
    (∀ axiom : Pattern,
        axiomtheory
        → ∀ (ρ : @Valuation Σ m),
          eval ρ axiom = ⊤) →
    eval ρ ((ex , phi) ⋅ psi ---> ex , phipsi)%ml = ⊤.

(* soundness for prop_ex_left *)
  Lemma proof_rule_prop_ex_left_sound {m : Model} (theory : Theory) (phi psi : Pattern)
        (ρ : @Valuation Σ m):
    (well_formed (patt_imp (patt_app psi (patt_exists phi)) (patt_exists (patt_app psi phi)))) →
    (well_formed (ex, phi)%ml) → (@well_formed Σ psi) →
    (∀ axiom : Pattern,
        axiomtheory
        → ∀ (ρ : @Valuation Σ m),
          eval ρ axiom = ⊤) →
    eval ρ (psi ⋅ (ex , phi) ---> ex , psiphi)%ml = ⊤.

(* free_svar_subst maintains soundness *)
Lemma proof_rule_set_var_subst_sound {m : Model}: ∀ phi psi,
  well_formed_closed phiwell_formed psi
  (∀ (ρ : @Valuation Σ m),
      eval ρ phi = ⊤)
  →
  ∀ X ρ,
    @eval Σ m ρ (phi^[[svar: Xpsi]]) = ⊤.

(* Soundness theorem *)
Theorem Soundness :
   phi : Pattern, theory : Theory,
  well_formed phi → (theoryH phi) → (theoryphi).

End soundness.

This page has been generated by coqdoc