Idris2Doc : Core.TT.Var

Core.TT.Var

(source)

Definitions

dataIsVar : a->Nat->Lista->Type
  IsVar n k ns is a proof that
the name n
is a position k
in the snoclist ns

Totality: total
Visibility: public export
Constructors:
First : IsVarn0 (n::ns)
Later : IsVarnins->IsVarn (Si) (m::ns)

Hint: 
FreelyEmbeddable (IsVarxk)
0Last : HasLength (Sn) vs->Exists (\nm=>IsVarnmnvs)
Totality: total
Visibility: export
finIdx : (0_ : IsVarxidxvars) ->Fin (lengthvars)
Totality: total
Visibility: export
nameAt : (0_ : IsVarnidxvars) ->a
  Recover the value pointed at by an IsVar proof
O(n) in the size of the index

Totality: total
Visibility: export
dropLater : IsVarnm (Sidx) (n::ns) ->IsVarnmidxns
  Inversion principle for Later

Totality: total
Visibility: export
0mkIsVar : HasLengthminner->IsVarnmm (inner++ (nm::outer))
Totality: total
Visibility: export
0mkIsVarChiply : HasLengthminner->IsVarnmm (inner<>> (nm::outer))
Totality: total
Visibility: export
dropIsVar : (ns : Lista) -> (0_ : IsVarnameidxns) ->Lista
  Compute the remaining scope once the target variable has been removed

Totality: total
Visibility: public export
0embedIsVar : IsVarxidxxs->IsVarxidx (xs++outer)
  Throw in extra variables on the outer side of the context
This is essentially the identity function
This is slow so we ensure it's only used in a runtime irrelevant manner

Totality: total
Visibility: export
0weakenIsVar : (s : SizeOfns) ->IsVarxidxxs->IsVarx (sizes+idx) (ns++xs)
  Throw in extra variables on the local end of the context.
This is slow so we ensure it's only used in a runtime irrelevant manner

Totality: total
Visibility: export
locateIsVar : (s : SizeOflocal) -> (0_ : IsVarxidx (local++outer)) ->Either (Erased (IsVarxidxlocal)) (Erased (IsVarx (minusidx (sizes)) outer))
Totality: total
Visibility: export
recordVar : Lista->Type
  A variable in a scope is a name, a De Bruijn index,
and a proof that the name is at that position in the scope.
Everything but the De Bruijn index is erased.

Totality: total
Visibility: public export
Constructor: 
MkVar : (0_ : IsVarvarNmvarIdxvars) ->Varvars

Projections:
.varIdx : Varvars->Nat
0.varNm : Varvars->a
0.varPrf : ({rec:0} : Varvars) ->IsVar (varNm{rec:0}) (varIdx{rec:0}) vars

Hints:
Eq (Varxs)
FreelyEmbeddableVar
GenWeakenVar
Hashable (Varvars)
IsScopedVar
Show (Varns)
StrengthenVar
WeakenVar
.varIdx : Varvars->Nat
Totality: total
Visibility: public export
varIdx : Varvars->Nat
Totality: total
Visibility: public export
0.varNm : Varvars->a
Totality: total
Visibility: public export
0varNm : Varvars->a
Totality: total
Visibility: public export
0.varPrf : ({rec:0} : Varvars) ->IsVar (varNm{rec:0}) (varIdx{rec:0}) vars
Totality: total
Visibility: public export
0varPrf : ({rec:0} : Varvars) ->IsVar (varNm{rec:0}) (varIdx{rec:0}) vars
Totality: total
Visibility: public export
first : Var (n::ns)
Totality: total
Visibility: export
later : Varns->Var (n::ns)
Totality: total
Visibility: export
isLater : Var (n::vs) ->Maybe (Varvs)
Totality: total
Visibility: export
last : SizeOfvs->Maybe (Varvs)
Totality: total
Visibility: export
mkVar : SizeOfinner->Var (inner++ (nm::outer))
Totality: total
Visibility: export
mkVarChiply : SizeOfinner->Var (inner<>> (nm::outer))
Totality: total
Visibility: export
allVars : (vars : Scope) ->List (Varvars)
  Generate all variables

Totality: total
Visibility: export
recordNVar : a->Lista->Type
Totality: total
Visibility: public export
Constructor: 
MkNVar : (0_ : IsVarnmnvarIdxvars) ->NVarnmvars

Projections:
.nvarIdx : NVarnmvars->Nat
0.nvarPrf : ({rec:0} : NVarnmvars) ->IsVarnm (nvarIdx{rec:0}) vars

Hints:
FreelyEmbeddable (NVarnm)
GenWeaken (NVarnm)
Strengthen (NVarnm)
Weaken (NVarnm)
.nvarIdx : NVarnmvars->Nat
Totality: total
Visibility: public export
nvarIdx : NVarnmvars->Nat
Totality: total
Visibility: public export
0.nvarPrf : ({rec:0} : NVarnmvars) ->IsVarnm (nvarIdx{rec:0}) vars
Totality: total
Visibility: public export
0nvarPrf : ({rec:0} : NVarnmvars) ->IsVarnm (nvarIdx{rec:0}) vars
Totality: total
Visibility: public export
first : NVarn (n::ns)
Totality: total
Visibility: export
later : NVarnmns->NVarnm (n::ns)
Totality: total
Visibility: export
isLater : NVarnm (n::ns) ->Maybe (NVarnmns)
Totality: total
Visibility: export
forgetName : NVarnmvars->Varvars
Totality: total
Visibility: export
recoverName : (v : Varvars) ->NVar (varNmv) vars
Totality: total
Visibility: export
mkNVar : SizeOfinner->NVarnm (inner++ (nm::outer))
Totality: total
Visibility: export
mkNVarChiply : SizeOfinner->NVarnm (inner<>> (nm::outer))
Totality: total
Visibility: export
locateNVar : SizeOflocal->NVarnm (local++outer) ->Either (NVarnmlocal) (NVarnmouter)
Totality: total
Visibility: export
dropNVar : NVarnmns->Lista
Totality: total
Visibility: public export
isDeBruijn : Nat-> (vars : ListName) ->Maybe (Varvars)
Totality: total
Visibility: export
isNVar : (n : Name) -> (ns : ListName) ->Maybe (NVarnns)
Totality: total
Visibility: export
isVar : Name-> (ns : ListName) ->Maybe (Varns)
Totality: total
Visibility: export
locateVar : SizeOflocal->Var (local++outer) ->Either (Varlocal) (Varouter)
Totality: total
Visibility: export
weakenNVar : SizeOfns->NVarnameouter->NVarname (ns++outer)
Totality: total
Visibility: export
embedNVar : NVarnamens->NVarname (ns++outer)
Totality: total
Visibility: export
insertNVar : SizeOflocal->NVarnm (local++outer) ->NVarnm (local++ (n::outer))
Totality: total
Visibility: export
insertNVarChiply : SizeOflocal->NVarnm (local<>>outer) ->NVarnm (local<>> (n::outer))
Totality: total
Visibility: export
insertNVarNames : GenWeakenable (NVarname)
Totality: total
Visibility: export
removeNVar : SizeOflocal->NVarnm (local++ (n::outer)) ->Maybe (NVarnm (local++outer))
  The (partial) inverse to insertNVar

Totality: total
Visibility: export
insertVar : SizeOflocal->Var (local++outer) ->Var (local++ (n::outer))
Totality: total
Visibility: export
removeVar : SizeOflocal->Var (local++ (n::outer)) ->Maybe (Var (local++outer))
  The (partial) inverse to insertVar

Totality: total
Visibility: export
strengthenIsVar : (s : SizeOfinner) -> (0_ : IsVarxn (inner++vars)) ->Maybe (Erased (IsVarx (minusn (sizes)) vars))
Totality: total
Visibility: export
thinIsVar : (0_ : IsVarnameidxxs) ->Thinxsys->Varys
Totality: total
Visibility: export
shrinkIsVar : (0_ : IsVarnameidxxs) ->Thinysxs->Maybe (Varys)
Totality: total
Visibility: export
0FreelyEmbeddableIsVar : FreelyEmbeddable (IsVarxk)
Totality: total
Visibility: export
WeakenVar : WeakenVar
Totality: total
Visibility: export
WeakenNVar : Weaken (NVarnm)
Totality: total
Visibility: export
shiftUnderNs : SizeOfinner-> (0_ : IsVarnidx (x:: (inner++outer))) ->NVarn (inner++ (x::outer))
  Moving the zeroth variable under a set number of variables

Totality: total
Visibility: export