Idris2Doc : Deriving.Common

Deriving.Common

Definitions

dataIsFreeOf : Name->TTImp->Type
  IsFreeOf is parametrised by
@ x the name of the type variable that the functioral action will change
@ ty the type that does not contain any mention of x

Totality: total
Visibility: export
Constructor: 
TrustMeFO : IsFreeOfax
  For now we do not bother keeping precise track of the proof that a type
is free of x
assert_IsFreeOf : IsFreeOfxty
  We may need to manufacture proofs and so we provide the `assert` escape hatch.

Totality: total
Visibility: export
isFreeOf : (x : Name) -> (ty : TTImp) ->Maybe (IsFreeOfxty)
  Testing function deciding whether the given term is free of a particular
variable.

Totality: total
Visibility: export
recordIsType : Type
Totality: total
Visibility: public export
Constructor: 
MkIsType : Name->List (ArgumentName, Nat) ->List (Name, TTImp) ->IsType

Projections:
.dataConstructors : IsType->List (Name, TTImp)
.parameterNames : IsType->List (ArgumentName, Nat)
.typeConstructor : IsType->Name
.typeConstructor : IsType->Name
Totality: total
Visibility: public export
typeConstructor : IsType->Name
Totality: total
Visibility: public export
.parameterNames : IsType->List (ArgumentName, Nat)
Totality: total
Visibility: public export
parameterNames : IsType->List (ArgumentName, Nat)
Totality: total
Visibility: public export
.dataConstructors : IsType->List (Name, TTImp)
Totality: total
Visibility: public export
dataConstructors : IsType->List (Name, TTImp)
Totality: total
Visibility: public export
isType : Elaborationm=>TTImp->mIsType
Totality: total
Visibility: export
recordConstructorView : Type
Totality: total
Visibility: public export
Constructor: 
MkConstructorView : SnocList (Name, Nat) ->List (Count, ArgumentTTImp) ->ConstructorView

Projections:
.conArgTypes : ConstructorView->List (Count, ArgumentTTImp)
.params : ConstructorView->SnocList (Name, Nat)
.params : ConstructorView->SnocList (Name, Nat)
Totality: total
Visibility: public export
params : ConstructorView->SnocList (Name, Nat)
Totality: total
Visibility: public export
.conArgTypes : ConstructorView->List (Count, ArgumentTTImp)
Totality: total
Visibility: public export
conArgTypes : ConstructorView->List (Count, ArgumentTTImp)
Totality: total
Visibility: public export
constructorView : TTImp->MaybeConstructorView
Totality: total
Visibility: export
withParams : FC-> (Nat->MaybeTTImp) ->List (ArgumentName, Nat) ->TTImp->TTImp
Totality: total
Visibility: export
dataHasType : Name->TTImp->Type
  Type of proofs that something has a given type

Totality: total
Visibility: export
Constructor: 
TrustMeHT : HasTypenmty
hasType : Elaborationm=> (nm : Name) ->m (Maybe (ty : TTImp**HasTypenmty))
Totality: total
Visibility: export
dataIsProvable : TTImp->Type
  Type of proofs that a type is inhabited

Totality: total
Visibility: export
Constructor: 
TrustMeIP : IsProvablety
isProvable : Elaborationm=> (ty : TTImp) ->m (Maybe (IsProvablety))
Totality: total
Visibility: export
dataHasImplementation : (a->Type) ->TTImp->Type
  Type of proofs that a type satisfies a constraint.
Internally it's vacuous. We don't export the constructor so
that users cannot manufacture buggy proofs.

Totality: total
Visibility: export
Constructor: 
TrustMeHI : HasImplementationintft
assert_hasImplementation : HasImplementationintft
  We may need to manufacture proofs and so we provide the `assert` escape hatch.

Totality: total
Visibility: export
hasImplementation : Elaborationm=> (intf : (a->Type)) -> (t : TTImp) ->m (Maybe (HasImplementationintft))
  Given
@ intf an interface (e.g. `Functor`, or `Bifunctor`)
@ t a term corresponding to a (possibly partially applied) type constructor
check whether Idris2 can find a proof that t satisfies the interface.

Totality: total
Visibility: export
optionallyEta : FC->MaybeTTImp-> (TTImp->TTImp) ->TTImp
  Optionally eta-expand if there is no argument available

Totality: total
Visibility: export
apply : FC->TTImp->ListTTImp->TTImp
  We often apply multiple arguments, this makes things simpler

Totality: total
Visibility: export
cleanup : TTImp->TTImp
  Use unqualified names (useful for more compact printing)

Totality: total
Visibility: export
freshName : ListName->String->String
  Create fresh names

Totality: total
Visibility: export