Documentation

LeanPool.MatchingLogic.EntryIII.CaptureAvoiding

MatchingLogic.EntryIII.CaptureAvoiding #

@[simp]
theorem MatchingLogic.Provable.ex_mono {S : Signature} {Gamma : Set (Pattern S )} {x : } {p q : Pattern S } (h : Provable Gamma (p.imp q)) :
Provable Gamma ((Pattern.ex x p).imp (Pattern.ex x q))
theorem MatchingLogic.Provable.imp_mono {S : Signature} {Gamma : Set (Pattern S )} {p p' q q' : Pattern S } (hp : Provable Gamma (p'.imp p)) (hq : Provable Gamma (q.imp q')) :
Provable Gamma ((p.imp q).imp (p'.imp q'))
theorem MatchingLogic.Provable.app_mono {S : Signature} {Gamma : Set (Pattern S )} {sigma : S.Sym} {args args' : Fin (S.arity sigma)Pattern S } (h : ∀ (i : Fin (S.arity sigma)), Provable Gamma ((args i).imp (args' i))) :
Provable Gamma ((Pattern.app sigma args).imp (Pattern.app sigma args'))

Name-insensitive structural complexity for strong induction in the Truth Lemma.

Equations
Instances For

    Kernel-level replacement for the source's quotient by alpha equivalence: both implication directions are derivable, and structural complexity agrees.

    Instances For
      theorem MatchingLogic.Pattern.AlphaEq.trans {S : Signature} {p q r : Pattern S } (hpq : p.AlphaEq q) (hqr : q.AlphaEq r) :
      theorem MatchingLogic.Pattern.AlphaEq.imp {S : Signature} {p p' q q' : Pattern S } (hp : p.AlphaEq p') (hq : q.AlphaEq q') :
      (p.imp q).AlphaEq (p'.imp q')
      theorem MatchingLogic.Pattern.AlphaEq.app {S : Signature} {sigma : S.Sym} {args args' : Fin (S.arity sigma)Pattern S } (h : ∀ (i : Fin (S.arity sigma)), (args i).AlphaEq (args' i)) :
      (Pattern.app sigma args).AlphaEq (Pattern.app sigma args')
      theorem MatchingLogic.Pattern.AlphaEq.alphaEx {S : Signature} {x y : } {p : Pattern S } (hy : yp.allVars) :
      theorem MatchingLogic.Pattern.AlphaEq.denote_eq {S : Signature} {p q : Pattern S } (h : p.AlphaEq q) (M : Model S) (rho : M.carrier) :
      M.denote rho p = M.denote rho q

      Total source-style capture-avoiding substitution on raw Nat names.

      Equations
      Instances For

        Relational specification exposing the alpha-equivalent, capture-free body used by total substitution.

        Equations
        Instances For

          Total substitution preserves structural complexity, so the substituted body is available to the strong induction used by the Truth Lemma.

          theorem MatchingLogic.Model.denote_captureAvoidingSubst {S : Signature} (M : Model S) (rho : M.carrier) (x y : ) (p : Pattern S ) :
          M.denote rho (Pattern.captureAvoidingSubst x y p) = M.denote (Function.update rho x (rho y)) p
          theorem MatchingLogic.Pattern.IsCaptureAvoidingSubst.denote {S : Signature} {x y : } {p q : Pattern S } (h : IsCaptureAvoidingSubst x y p q) (M : Model S) (rho : M.carrier) :
          M.denote rho q = M.denote (Function.update rho x (rho y)) p
          theorem MatchingLogic.Pattern.IsCaptureAvoidingSubst.exQuant {S : Signature} {Gamma : Set (Pattern S )} {x y : } {p q : Pattern S } (h : IsCaptureAvoidingSubst x y p q) :
          Provable Gamma (q.imp (ex x p))