Equations
- One or more equations did not get rendered due to their size.
- Auto.Embedding.Lam.LamTerm.mapBVarAt idx f (Auto.Embedding.Lam.LamTerm.atom n) = Auto.Embedding.Lam.LamTerm.atom n
- Auto.Embedding.Lam.LamTerm.mapBVarAt idx f (Auto.Embedding.Lam.LamTerm.etom n) = Auto.Embedding.Lam.LamTerm.etom n
- Auto.Embedding.Lam.LamTerm.mapBVarAt idx f (Auto.Embedding.Lam.LamTerm.base b) = Auto.Embedding.Lam.LamTerm.base b
- Auto.Embedding.Lam.LamTerm.mapBVarAt idx f (Auto.Embedding.Lam.LamTerm.bvar n) = Auto.Embedding.Lam.LamTerm.bvar (Auto.Embedding.mapAt idx f n)
- Auto.Embedding.Lam.LamTerm.mapBVarAt idx f (Auto.Embedding.Lam.LamTerm.lam s t_2) = Auto.Embedding.Lam.LamTerm.lam s (Auto.Embedding.Lam.LamTerm.mapBVarAt idx.succ f t_2)
Instances For
theorem
Auto.Embedding.Lam.LamTerm.maxEVarSucc_mapBVarAt
{idx : Nat}
{f : Nat → Nat}
{t : LamTerm}
:
Instances For
def
Auto.Embedding.Lam.LamWF.mapBVarAt
{f : Nat → Nat}
{restore : (Nat → LamSort) → Nat → LamSort}
{rty : LamSort}
(covP : coPair f restore)
(idx : Nat)
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := lctx, rterm := rterm, rty := rty })
:
LamWF lamVarTy { lctx := restoreAt idx restore lctx, rterm := LamTerm.mapBVarAt idx f rterm, rty := rty }
Equations
- One or more equations did not get rendered due to their size.
- Auto.Embedding.Lam.LamWF.mapBVarAt covP idx (Auto.Embedding.Lam.LamTerm.atom n) (Auto.Embedding.Lam.LamWF.ofAtom n) = Auto.Embedding.Lam.LamWF.ofAtom n
- Auto.Embedding.Lam.LamWF.mapBVarAt covP idx (Auto.Embedding.Lam.LamTerm.etom n) (Auto.Embedding.Lam.LamWF.ofEtom n) = Auto.Embedding.Lam.LamWF.ofEtom n
- Auto.Embedding.Lam.LamWF.mapBVarAt covP idx (Auto.Embedding.Lam.LamTerm.base b) (Auto.Embedding.Lam.LamWF.ofBase b_1) = Auto.Embedding.Lam.LamWF.ofBase b_1
- Auto.Embedding.Lam.LamWF.mapBVarAt covP idx (Auto.Embedding.Lam.LamTerm.bvar n) (Auto.Embedding.Lam.LamWF.ofBVar n) = ⋯ ▸ Auto.Embedding.Lam.LamWF.ofBVar (Auto.Embedding.mapAt idx f n)
Instances For
def
Auto.Embedding.Lam.LamWF.fromMapBVarAtAux
{f : Nat → Nat}
{restore : (Nat → LamSort) → Nat → LamSort}
{lctx' : Nat → LamSort}
{rterm' : LamTerm}
{rty : LamSort}
(covP : coPair f restore)
(idx : Nat)
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(rterm : LamTerm)
(hLCtx : lctx' = restoreAt idx restore lctx)
(hRTerm : rterm' = LamTerm.mapBVarAt idx f rterm)
(HWF : LamWF lamVarTy { lctx := lctx', rterm := rterm', rty := rty })
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Auto.Embedding.Lam.LamWF.fromMapBVarAt
{f : Nat → Nat}
{restore : (Nat → LamSort) → Nat → LamSort}
{rty : LamSort}
(covP : coPair f restore)
(idx : Nat)
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := restoreAt idx restore lctx, rterm := LamTerm.mapBVarAt idx f rterm, rty := rty })
:
Equations
- Auto.Embedding.Lam.LamWF.fromMapBVarAt covP idx rterm HWF = Auto.Embedding.Lam.LamWF.fromMapBVarAtAux covP idx rterm ⋯ ⋯ HWF
Instances For
theorem
Auto.Embedding.Lam.LamWF.mapBVarAt.correct
{f : Nat → Nat}
{restore : (Nat → LamSort) → Nat → LamSort}
{rTy : LamSort}
(lval : LamValuation)
{restoreDep :
{rty : Nat → LamSort} →
((n : Nat) → LamSort.interp lval.tyVal (rty n)) → (n : Nat) → LamSort.interp lval.tyVal (restore rty n)}
(covPD : coPairDep (LamSort.interp lval.tyVal) f restore restoreDep)
(idx : Nat)
{lctxTy : Nat → LamSort}
(lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n))
(rterm : LamTerm)
(HWF : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := rterm, rty := rTy })
:
Changing all .bvar ?n
in t
(where ?n >= idx
) to .bvar (?n + lvl)
Equations
- Auto.Embedding.Lam.LamTerm.bvarLiftsIdx idx lvl = Auto.Embedding.Lam.LamTerm.mapBVarAt idx fun (x : Nat) => x.add lvl
Instances For
@[reducible]
Instances For
Changing all .bvar ?n
in t
(where ?n >= idx
) to .bvar (Nat.succ ?n)
Equations
Instances For
@[reducible]
Instances For
theorem
Auto.Embedding.Lam.LamTerm.bvarLiftsIdx_app
{idx lvl : Nat}
{s : LamSort}
{fn arg : LamTerm}
:
theorem
Auto.Embedding.Lam.LamTerm.bvarLiftsIdx_lam
{idx lvl : Nat}
{s : LamSort}
{body : LamTerm}
:
def
Auto.Embedding.Lam.LamWF.bvarLiftsIdx
{rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
{idx lvl : Nat}
{xs : List LamSort}
(heq : xs.length = lvl)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := lctx, rterm := rterm, rty := rTy })
:
LamWF lamVarTy { lctx := pushLCtxsAt xs idx lctx, rterm := LamTerm.bvarLiftsIdx idx lvl rterm, rty := rTy }
Equations
- Auto.Embedding.Lam.LamWF.bvarLiftsIdx heq rterm HWF = Auto.Embedding.Lam.LamWF.mapBVarAt ⋯ idx rterm HWF
Instances For
def
Auto.Embedding.Lam.LamWF.fromBVarLiftsIdx
{rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
{idx lvl : Nat}
{xs : List LamSort}
(heq : xs.length = lvl)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := pushLCtxsAt xs idx lctx, rterm := LamTerm.bvarLiftsIdx idx lvl rterm, rty := rTy })
:
Equations
- Auto.Embedding.Lam.LamWF.fromBVarLiftsIdx heq rterm HWF = Auto.Embedding.Lam.LamWF.fromMapBVarAt ⋯ idx rterm HWF
Instances For
theorem
Auto.Embedding.Lam.LamWF.interp_bvarLiftsIdx
{rTy : LamSort}
(lval : LamValuation)
{idx lvl : Nat}
{tys : List LamSort}
(xs : HList (LamSort.interp lval.tyVal) tys)
(heq : tys.length = lvl)
(lctxTy : Nat → LamSort)
(lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n))
(rterm : LamTerm)
(HWF : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := rterm, rty := rTy })
:
interp lval lctxTy lctxTerm HWF = interp lval (pushLCtxsAt tys idx lctxTy) (pushLCtxsAtDep xs idx lctxTerm) (bvarLiftsIdx heq rterm HWF)
def
Auto.Embedding.Lam.LamWF.bvarLifts
{rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
{lvl : Nat}
{xs : List LamSort}
(heq : xs.length = lvl)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := lctx, rterm := rterm, rty := rTy })
:
LamWF lamVarTy { lctx := pushLCtxs xs lctx, rterm := LamTerm.bvarLifts lvl rterm, rty := rTy }
Equations
- Auto.Embedding.Lam.LamWF.bvarLifts heq rterm HWF = ⋯.mp (Auto.Embedding.Lam.LamWF.bvarLiftsIdx heq rterm HWF)
Instances For
def
Auto.Embedding.Lam.LamWF.fromBVarLifts
{rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
{lvl : Nat}
{xs : List LamSort}
(heq : xs.length = lvl)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := pushLCtxs xs lctx, rterm := LamTerm.bvarLifts lvl rterm, rty := rTy })
:
Equations
- Auto.Embedding.Lam.LamWF.fromBVarLifts heq rterm HWF = Auto.Embedding.Lam.LamWF.fromBVarLiftsIdx heq rterm (⋯.mp HWF)
Instances For
theorem
Auto.Embedding.Lam.LamWF.interp_bvarLifts
{rTy : LamSort}
(lval : LamValuation)
{lvl : Nat}
{tys : List LamSort}
(xs : HList (LamSort.interp lval.tyVal) tys)
(heq : tys.length = lvl)
(lctxTy : Nat → LamSort)
(lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n))
(rterm : LamTerm)
(HWF : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := rterm, rty := rTy })
:
def
Auto.Embedding.Lam.LamWF.bvarLiftIdx
{rTy s : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(idx : Nat)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := lctx, rterm := rterm, rty := rTy })
:
LamWF lamVarTy { lctx := pushLCtxAt s idx lctx, rterm := LamTerm.bvarLiftIdx idx rterm, rty := rTy }
Equations
- Auto.Embedding.Lam.LamWF.bvarLiftIdx idx rterm HWF = Auto.Embedding.Lam.LamWF.mapBVarAt ⋯ idx rterm HWF
Instances For
def
Auto.Embedding.Lam.LamWF.fromBVarLiftIdx
{s rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(idx : Nat)
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := pushLCtxAt s idx lctx, rterm := LamTerm.bvarLiftIdx idx rterm, rty := rTy })
:
Equations
- Auto.Embedding.Lam.LamWF.fromBVarLiftIdx idx rterm HWF = Auto.Embedding.Lam.LamWF.fromMapBVarAt ⋯ idx rterm HWF
Instances For
theorem
Auto.Embedding.Lam.LamWF.interp_bvarLiftIdx
{rTy : LamSort}
(lval : LamValuation)
{idx : Nat}
(lctxTy : Nat → LamSort)
(lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n))
{xty : LamSort}
(x : LamSort.interp lval.tyVal xty)
(rterm : LamTerm)
(HWF : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := rterm, rty := rTy })
:
interp lval lctxTy lctxTerm HWF = interp lval (pushLCtxAt xty idx lctxTy) (pushLCtxAtDep x idx lctxTerm) (bvarLiftIdx idx rterm HWF)
def
Auto.Embedding.Lam.LamWF.bvarLift
{rTy s : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := lctx, rterm := rterm, rty := rTy })
:
Equations
- Auto.Embedding.Lam.LamWF.bvarLift rterm HWF = ⋯.mp (Auto.Embedding.Lam.LamWF.bvarLiftIdx 0 rterm HWF)
Instances For
def
Auto.Embedding.Lam.LamWF.fromBVarLift
{s rTy : LamSort}
{lamVarTy : LamTyVal}
{lctx : Nat → LamSort}
(rterm : LamTerm)
(HWF : LamWF lamVarTy { lctx := pushLCtx s lctx, rterm := rterm.bvarLift, rty := rTy })
:
Equations
- Auto.Embedding.Lam.LamWF.fromBVarLift rterm HWF = Auto.Embedding.Lam.LamWF.fromBVarLiftIdx 0 rterm (⋯.mp HWF)
Instances For
theorem
Auto.Embedding.Lam.LamWF.interp_bvarLift
{rTy : LamSort}
(lval : LamValuation)
(lctxTy : Nat → LamSort)
(lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctxTy n))
{xty : LamSort}
(x : LamSort.interp lval.tyVal xty)
(rterm : LamTerm)
(HWF : LamWF lval.toLamTyVal { lctx := lctxTy, rterm := rterm, rty := rTy })
:
def
Auto.Embedding.Lam.LamWF.pushLCtxAt_ofBVar
{lamVarTy : LamTyVal}
{s : LamSort}
{idx : Nat}
{lctx : Nat → LamSort}
:
LamWF lamVarTy { lctx := pushLCtxAt s idx lctx, rterm := LamTerm.bvar idx, rty := s }
Equations
Instances For
def
Auto.Embedding.Lam.LamWF.pushLCtx_ofBVar
{lamVarTy : LamTyVal}
{s : LamSort}
{lctx : Nat → LamSort}
:
LamWF lamVarTy { lctx := pushLCtx s lctx, rterm := LamTerm.bvar 0, rty := s }
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Auto.Embedding.Lam.LamTerm.bvarLowersIdx? idx lvl (Auto.Embedding.Lam.LamTerm.atom n) = some (Auto.Embedding.Lam.LamTerm.atom n)
- Auto.Embedding.Lam.LamTerm.bvarLowersIdx? idx lvl (Auto.Embedding.Lam.LamTerm.etom n) = some (Auto.Embedding.Lam.LamTerm.etom n)
- Auto.Embedding.Lam.LamTerm.bvarLowersIdx? idx lvl (Auto.Embedding.Lam.LamTerm.base b) = some (Auto.Embedding.Lam.LamTerm.base b)
Instances For
theorem
Auto.Embedding.Lam.LamTerm.maxEVarSucc_bvarLowersIdx?
{idx lvl : Nat}
{t t' : LamTerm}
(heq : bvarLowersIdx? idx lvl t = some t')
:
Equations
Instances For
theorem
Auto.Embedding.Lam.LamTerm.maxEVarSucc_bvarLowers?
{lvl : Nat}
{t t' : LamTerm}
(heq : bvarLowers? lvl t = some t')
:
Equations
Instances For
theorem
Auto.Embedding.Lam.LamTerm.maxEVarSucc_bvarLowerIdx?
{idx : Nat}
{t t' : LamTerm}
(heq : bvarLowerIdx? idx t = some t')
:
Instances For
theorem
Auto.Embedding.Lam.LamTerm.maxEVarSucc_bvarLower?
{t t' : LamTerm}
(heq : t.bvarLower? = some t')
: