Documentation

Auto.Embedding.LamTermInterp

noncomputable def Auto.Embedding.Lam.LamTerm.interp (lval : LamValuation) (lctxTy : NatLamSort) (t : LamTerm) :
(s : LamSort) × (((n : Nat) → LamSort.interp lval.tyVal (lctxTy n))LamSort.interp lval.tyVal s)

Interpreting while typechecking a λ term. If the term fails to typecheck at some point, return ⟨.base .prop, GLift.up False⟩ as a default value.

Equations
Instances For
    theorem Auto.Embedding.Lam.LamTerm.interp_substLCtxTerm {t : LamTerm} (lval : LamValuation) {lctxTy lctxTy' : NatLamSort} {lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n)} {lctxTerm' : (n : Nat) → LamSort.interp lval.tyVal (lctxTy' n)} (HLCtxTyEq : lctxTy = lctxTy') (HLCtxTermEq : lctxTerm lctxTerm') :
    (interp lval lctxTy t).snd lctxTerm (interp lval lctxTy' t).snd lctxTerm'
    noncomputable def Auto.Embedding.Lam.LamTerm.interpAsProp (lval : LamValuation) (lctxTy : NatLamSort) (lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n)) (t : LamTerm) :
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Auto.Embedding.Lam.LamTerm.interp_equiv {t : LamTerm} {rty : LamSort} (lval : LamValuation) (lctxTy : NatLamSort) (lwf : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := t, rty := rty }) :
      rty, fun (lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n)) => LamWF.interp lval lctxTy lctxTerm lwf = interp lval lctxTy t

      Only accepts propositions p without loose bound variables

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_ofLamCheck?Eq {lval : LamValuation} {t : LamTerm} {s : LamSort} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} (H : lamCheck?Eq lval (List.map Sigma.fst lctx) t s) :
        lamCheck?Eq' lval lctx t s
        def Auto.Embedding.Lam.LamTerm.interpEq (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (t : LamTerm) {α : Type u} (val : α) :
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem Auto.Embedding.Lam.LamTerm.interpAsProp_of_interpEq {lval : LamValuation} {p : LamTerm} {ty : Prop} (proof : ty) (h₁ : lamCheck?Eq' lval [] p (LamSort.base LamBaseSort.prop)) (h₂ : interpEq lval [] p { down := ty }) :
          theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_atom {lval : LamValuation} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} {n : Nat} :
          lamCheck?Eq' lval lctx (atom n) (lval.lamVarTy n)
          theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_etom {lval : LamValuation} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} {n : Nat} :
          lamCheck?Eq' lval lctx (etom n) (lval.lamEVarTy n)
          theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_bvar {lval : LamValuation} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} {n : Nat} {s : LamSort} {val : LamSort.interp lval.tyVal s} (h : lctx[n]? = some s, val) :
          lamCheck?Eq' lval lctx (bvar n) s
          theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_lam {lval : LamValuation} {argTy : LamSort} {val : LamSort.interp lval.tyVal argTy} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} {body : LamTerm} {s : LamSort} (h : lamCheck?Eq' lval (argTy, val :: lctx) body s) :
          lamCheck?Eq' lval lctx (lam argTy body) (argTy.func s)
          theorem Auto.Embedding.Lam.LamTerm.lamCheck?Eq'_app {lval : LamValuation} {lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)} {fn : LamTerm} {argTy resTy : LamSort} {arg : LamTerm} (hFn : lamCheck?Eq' lval lctx fn (argTy.func resTy)) (hArg : lamCheck?Eq' lval lctx arg argTy) :
          lamCheck?Eq' lval lctx (app argTy fn arg) resTy
          theorem Auto.Embedding.Lam.LamTerm.interpEq_atom {n : Nat} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (val : LamSort.interp lval.tyVal (lval.lamVarTy n)) (h : lval.varVal n = val) :
          interpEq lval lctx (atom n) val
          theorem Auto.Embedding.Lam.LamTerm.interpEq_etom {n : Nat} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (val : LamSort.interp lval.tyVal (lval.lamEVarTy n)) (h : lval.eVarVal n = val) :
          interpEq lval lctx (etom n) val
          theorem Auto.Embedding.Lam.LamTerm.interpEq_base {b : LamBaseTerm} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (val : LamSort.interp lval.tyVal (LamBaseTerm.lamCheck lval.toLamTyVal b)) (h : LamBaseTerm.interp lval b = val) :
          interpEq lval lctx (base b) val
          theorem Auto.Embedding.Lam.LamTerm.interpEq_bvar {n : Nat} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (s : LamSort) (val : LamSort.interp lval.tyVal s) (h : lctx[n]? = some s, val) :
          interpEq lval lctx (bvar n) val
          theorem Auto.Embedding.Lam.LamTerm.interpEq_lam {β : Type u_1} {argTy : LamSort} {t : LamTerm} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) (val : LamSort.interp lval.tyVal argTyβ) (hBody : ∀ (x : LamSort.interp lval.tyVal argTy), interpEq lval (argTy, x :: lctx) t (val x)) :
          interpEq lval lctx (lam argTy t) val
          theorem Auto.Embedding.Lam.LamTerm.interpEq_app {fn arg : LamTerm} (lval : LamValuation) (lctx : List ((s : LamSort) × LamSort.interp lval.tyVal s)) {argTy resTy : LamSort} (fnChk : lamCheck?Eq' lval lctx fn (argTy.func resTy)) (argChk : lamCheck?Eq' lval lctx arg argTy) (fnVal : LamSort.interp lval.tyVal argTyLamSort.interp lval.tyVal resTy) (argVal : LamSort.interp lval.tyVal argTy) (hFn : interpEq lval lctx fn fnVal) (hArg : interpEq lval lctx arg argVal) :
          interpEq lval lctx (app argTy fn arg) (fnVal argVal)
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Turning a sort into fvar in a hash-consing manner For example, for .func (.atom 0) (.atom 0), we'll have

                                1. .atom 0 → fvar₀ := .atom 0
                                2. .func (.atom 0) (.atom 0) → fvar₁ := .func fvar₀ fvar₀
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For

                                  Turning all sorts occurring in a LamTerm into fvar, in a hash-consing manner

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