Documentation

LeanPool.FormalizationOfBoundedArithmetic.Semantics

LeanPool.FormalizationOfBoundedArithmetic.Semantics #

theorem FirstOrder.Language.Term.realize_zero {M : Type u_1} [peano.Structure M] {a : Type u_4} {env : aM} :
realize env 0 = 0
theorem FirstOrder.Language.Term.realize_one {M : Type u_1} [peano.Structure M] {a : Type u_4} {env : aM} :
realize env 1 = 1
theorem FirstOrder.Language.Term.realize_add {M : Type u_1} [h : peano.Structure M] {a : Type u_4} {env : aM} (t u : peano.Term a) :
realize env (t + u) = realize env t + realize env u
theorem FirstOrder.Language.Term.realize_mul {M : Type u_1} [peano.Structure M] {a : Type u_4} {env : aM} (t u : peano.Term a) :
realize env (t * u) = realize env t * realize env u

Discharge a realize_* lemma whose displayed form is a relabelEquiv. The target is the Formula.* reshaping definition being unfolded.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem FirstOrder.Language.Formula.realize_flip {L : Language} {M : Type u_1} [L.Structure M] {a : Type u_5} {b : Type u_4} (phi : L.Formula (a b)) {v : b aM} :
    theorem FirstOrder.Language.Formula.realize_rotate_21 {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 : FvName} (phi : L.Formula (Vars2 n1 n2)) {v : Vars2 n2 n1M} :
    phi.rotate21.Realize v phi.Realize (v fun (fv : Vars2 n1 n2) => match fv with | Vars2.fv1 => Vars2.fv2 | Vars2.fv2 => Vars2.fv1)
    theorem FirstOrder.Language.Formula.realize_rotate_213 {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 n3 : FvName} (phi : L.Formula (Vars3 n1 n2 n3)) {v : Vars3 n2 n1 n3M} :
    (rotate213 n1 n2 n3 phi).Realize v phi.Realize (v fun (fv : Vars3 n1 n2 n3) => match fv with | Vars3.fv1 => Vars3.fv2 | Vars3.fv2 => Vars3.fv1 | Vars3.fv3 => Vars3.fv3)
    theorem FirstOrder.Language.Formula.realize_mkInl {L : Language} {M : Type u_1} [L.Structure M] {a : Type u_4} (phi : L.Formula a) {v : a EmptyM} :
    theorem FirstOrder.Language.Formula.realize_display1 {L : Language} {M : Type u_1} [L.Structure M] {n1 : FvName} (phi : L.Formula (Vars1 n1)) {v : Vars1 n1 EmptyM} :
    theorem FirstOrder.Language.Formula.realize_display2 {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 : FvName} (phi : L.Formula (Vars2 n1 n2)) {v : Vars1 n1 Vars1 n2M} :
    (display2 n1 phi).Realize v phi.Realize (v fun (fv : Vars2 n1 n2) => match fv with | Vars2.fv1 => Sum.inl Vars1.fv1 | Vars2.fv2 => Sum.inr Vars1.fv1)
    theorem FirstOrder.Language.Formula.realize_display3 {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 n3 : FvName} (phi : L.Formula (Vars3 n1 n2 n3)) {v : Vars1 n1 Vars2 n2 n3M} :
    (display3 n1 phi).Realize v phi.Realize (v fun (fv : Vars3 n1 n2 n3) => match fv with | Vars3.fv1 => Sum.inl Vars1.fv1 | Vars3.fv2 => Sum.inr Vars2.fv1 | Vars3.fv3 => Sum.inr Vars2.fv2)
    theorem FirstOrder.Language.Formula.realize_display4 {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 n3 n4 : FvName} (phi : L.Formula (Vars4 n1 n2 n3 n4)) {v : Vars1 n1 Vars3 n2 n3 n4M} :
    (display4 n1 phi).Realize v phi.Realize (v fun (fv : Vars4 n1 n2 n3 n4) => match fv with | Vars4.fv1 => Sum.inl Vars1.fv1 | Vars4.fv2 => Sum.inr Vars3.fv1 | Vars4.fv3 => Sum.inr Vars3.fv2 | Vars4.fv4 => Sum.inr Vars3.fv3)
    theorem FirstOrder.Language.Formula.realize_display_swapleft {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 n3 : FvName} (phi : L.Formula (Vars1 n1 Vars2 n2 n3)) {v : Vars2 n1 n2 Vars1 n3M} :
    theorem FirstOrder.Language.Formula.realize_display_swapleft' {L : Language} {M : Type u_1} [L.Structure M] {n1 n2 n3 : FvName} (phi : L.Formula (Vars1 n1 Vars2 n2 n3)) {v : (Vars1 n1 Vars1 n2) Vars1 n3M} :

    peel_iAlls' k rewrites (iAlls' φ).Realize by peeling exactly k quantifiers (realize_all; intro).

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      peel_iExs' k rewrites (iExs' φ).Realize by peeling exactly k quantifiers (realize_ex; intro).

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem FirstOrder.Language.Formula.realize_iAlls'.Vars1 {L : Language} {M : Type u_1} [L.Structure M] {a : Type} {n1 : FvName} (phi : L.Formula (a _root_.Vars1 n1)) {v : aM} :
        phi.iAlls'.Realize v ∀ (x : M), phi.Realize (Sum.elim v fun (fv : _root_.Vars1 n1) => match fv with | Vars1.fv1 => x)
        theorem FirstOrder.Language.Formula.realize_iAlls'.Vars2 {L : Language} {M : Type u_1} [L.Structure M] {a : Type} {n1 n2 : FvName} (phi : L.Formula (a _root_.Vars2 n1 n2)) {v : aM} :
        phi.iAlls'.Realize v ∀ (x y : M), phi.Realize (Sum.elim v fun (fv : _root_.Vars2 n1 n2) => match fv with | Vars2.fv1 => x | Vars2.fv2 => y)
        theorem FirstOrder.Language.Formula.realize_iAlls'.Vars3 {L : Language} {M : Type u_1} [L.Structure M] {a : Type} {n1 n2 n3 : FvName} (phi : L.Formula (a _root_.Vars3 n1 n2 n3)) {v : aM} :
        phi.iAlls'.Realize v ∀ (x y z : M), phi.Realize (Sum.elim v fun (fv : _root_.Vars3 n1 n2 n3) => match fv with | Vars3.fv1 => x | Vars3.fv2 => y | Vars3.fv3 => z)
        theorem FirstOrder.Language.Formula.realize_iExs'.Vars1 {L : Language} {M : Type u_1} [L.Structure M] {a : Type} {n1 : FvName} (phi : L.Formula (a _root_.Vars1 n1)) {v : aM} :
        phi.iExs'.Realize v ∃ (x : M), phi.Realize (Sum.elim v fun (fv : _root_.Vars1 n1) => match fv with | Vars1.fv1 => x)
        theorem FirstOrder.Term.realize_in {num str : Type u} [Language.ZambellaModel num str] {a : Type} {n : } {t1 t2 : Language.zambella.Term (a Fin n)} {v : anum str} {xs : Fin nnum str} :
        theorem FirstOrder.Language.Formula.realize_in {num str : Type u} [ZambellaModel num str] {a : Type} {t1 t2 : zambella.Term (a Fin 0)} {v : anum str} :
        theorem FirstOrder.Language.Formula.realize_notin {num str : Type u} [ZambellaModel num str] {a : Type} {t1 t2 : zambella.Term (a Fin 0)} {v : anum str} {xs : Fin 0num str} :
        theorem FirstOrder.Language.Formula.realize_iBdEx' {a : Type} {n1 : FvName} {M : Type u_2} [peano.Structure M] {t : peano.Term (a Fin 0)} (phi : peano.Formula (a Vars1 n1)) {v : aM} :
        (iBdEx' t phi).Realize v xTerm.realize (Sum.elim v Fin.elim0) t, phi.Realize (Sum.elim v fun (x_1 : Vars1 n1) => x)
        theorem FirstOrder.Language.Formula.realize_iBdAll'.Vars1 {a : Type} {n1 : FvName} {num str : Type u_2} [inst1 : ZambellaModel num str] (phi : zambella.Formula (a _root_.Vars1 n1)) {t : zambella.Term (a Fin 0)} {v : anum str} :
        (iBdAll' t phi).Realize v xTerm.realize (Sum.elim v default) t, phi.Realize (Sum.elim v fun (fv : _root_.Vars1 n1) => match fv with | Vars1.fv1 => x)
        theorem FirstOrder.Language.Formula.realize_iBdAllLt'.Vars1 {L : Language} {a : Type} {n1 : FvName} {M : Type u_2} [L.IsOrdered] [L.Structure M] [Preorder M] [h : L.OrderedStructure M] (phi : L.Formula (a _root_.Vars1 n1)) {t : L.Term (a Fin 0)} {v : aM} :
        (iBdAllLt' t phi).Realize v x < Term.realize (Sum.elim v default) t, phi.Realize (Sum.elim v fun (fv : _root_.Vars1 n1) => match fv with | Vars1.fv1 => x)
        theorem FirstOrder.Language.Formula.realize_iBdAllNum'.Vars1 {a : Type} {n1 : FvName} {num str : Type u_2} [inst1 : ZambellaModel num str] (phi : zambella.Formula (a _root_.Vars1 n1)) {t : zambella.Term (a Fin 0)} {v : anum str} :
        (iBdAllNum' t phi).Realize v xTerm.realize (Sum.elim v default) t, x.isLeft = truephi.Realize (Sum.elim v fun (fv : _root_.Vars1 n1) => match fv with | Vars1.fv1 => x)