File FixPoint

From MatchingLogic Require Export FreshnessManager.
From MatchingLogic.ProofMode Require Export Firstorder.

Import MatchingLogic.Logic.Notations.


Lemma mu_monotone_quantify {Σ : Signature} Γ ϕ₁ ϕ₂ X (i : ProofInfo):
  ProofInfoLe ( (ExGen := ∅, SVSubst := {[X]}, KT := true, AKT := ~~ bound_svar_is_banned_under_mus ϕ₁^{{svar:X↦0}} 0 0)) i
  svar_has_negative_occurrence X ϕ₁ = false
  svar_has_negative_occurrence X ϕ₂ = false
  Γi ϕ₁ ---> ϕ₂ using i
  Γi (patt_mu (ϕ₁^{{svar: X ↦ 0}})) ---> (patt_mu (ϕ₂^{{svar: X ↦ 0}}))
  using i.

Lemma mu_monotone {Σ : Signature} Γ ϕ₁ ϕ₂ X (i : ProofInfo):
  ProofInfoLe ( (ExGen := ∅, SVSubst := {[X]}, KT := true, AKT := ~~ bound_svar_is_banned_under_mus ϕ₁ 0 0)) i
  well_formed (patt_mu ϕ₁) →
  well_formed (patt_mu ϕ₂) →
  Xfree_svars ϕ₁free_svars ϕ₂
  Γi ϕ₁^{svar:0↦X} ---> ϕ₂^{svar:0↦X} using i
  Γi (patt_mu ϕ₁) ---> (patt_mu ϕ₂)
  using i.

Lemma mu_iff_quantify {Σ : Signature} Γ ϕ₁ ϕ₂ X (i : ProofInfo):
  ProofInfoLe ( (ExGen := ∅, SVSubst := {[X]}, KT := true, AKT := true)) i
  svar_has_negative_occurrence X ϕ₁ = false
  svar_has_negative_occurrence X ϕ₂ = false
  Γi ϕ₁ <---> ϕ₂ using i
  Γi (patt_mu (ϕ₁^{{svar: X ↦ 0}})) <---> (patt_mu (ϕ₂^{{svar: X ↦ 0}}))
  using i.
Lemma move_mu_under_implication
  {Σ : Signature}
  Γ φ ψ :
    well_formed φ →
    well_formed (mu , ψ) →
    Γi φ ---> (mu , ψ) ---> mu , (φ ---> ψ) using
      (ExGen := ∅,
       SVSubst := ∅,
       KT := true,
       AKT := ~~ bound_svar_is_banned_under_mus ψ 0 0).

This page has been generated by coqdoc