import public Data.DPair
import public Data.Fin
import public Data.List.Ex
import public Data.SortedMap
import public Data.SortedMap.Dependent
import public Data.SortedMap.Extra
import public Data.SortedSet
import public Deriving.DepTyCheck.Util.ArgsPerm
import public Deriving.DepTyCheck.Util.Primitives
import public Language.Reflection.Compat
import public Language.Reflection.Expr
import public Language.Reflection.Loggingrecord GenSignature : TypeMkGenSignature : (targetType : TypeInfo) -> {auto 0 _ : AllTyArgsNamed targetType} -> SortedSet (Fin ((targetType .args) .length)) -> GenSignature.givenParams : ({rec:0} : GenSignature) -> SortedSet (Fin (((targetType {rec:0}) .args) .length)).targetType : GenSignature -> TypeInfo0 .targetTypeCorrect : ({rec:0} : GenSignature) -> AllTyArgsNamed (targetType {rec:0})DeriveBodyForType => ClosuringContext m => Elaboration m => SortedMap GenSignature (ExternalGenSignature, Name) => DerivationClosure mEq GenSignatureLogPosition GenSignatureOrd GenSignature.targetType : GenSignature -> TypeInfotargetType : GenSignature -> TypeInfo0 .targetTypeCorrect : ({rec:0} : GenSignature) -> AllTyArgsNamed (targetType {rec:0})0 targetTypeCorrect : ({rec:0} : GenSignature) -> AllTyArgsNamed (targetType {rec:0}).givenParams : ({rec:0} : GenSignature) -> SortedSet (Fin (((targetType {rec:0}) .args) .length))givenParams : ({rec:0} : GenSignature) -> SortedSet (Fin (((targetType {rec:0}) .args) .length))characteristics : GenSignature -> (String, List Nat)showGivens : GenSignature -> String.generatedParams : (sig : GenSignature) -> SortedSet (Fin (((sig .targetType) .args) .length))dependeesOfGivens : (sig : GenSignature) -> FinSet (((sig .targetType) .args) .length)Set of type arguments for which there exists a given argument depending on it
canonicSig : GenSignature -> TTImpcallCanonic : (0 sig : GenSignature) -> Name -> TTImp -> Vect ((sig .givenParams) .size) TTImp -> TTImpdata ArgExplicitness : Type.toTT : ArgExplicitness -> PiInfo arecord ExternalGenSignature : TypeMkExternalGenSignature : (targetType : TypeInfo) -> {auto 0 _ : AllTyArgsNamed targetType} -> (givenParams : SortedMap (Fin ((targetType .args) .length)) (ArgExplicitness, Name)) -> Vect (givenParams .size) (Fin (givenParams .size)) -> Vect gendParamsCnt (Fin gendParamsCnt) -> ExternalGenSignature.gendOrder : ({rec:0} : ExternalGenSignature) -> Vect (gendParamsCnt {rec:0}) (Fin (gendParamsCnt {rec:0})).gendParamsCnt : ExternalGenSignature -> Nat.givenParams : ({rec:0} : ExternalGenSignature) -> SortedMap (Fin (((targetType {rec:0}) .args) .length)) (ArgExplicitness, Name).givensOrder : ({rec:0} : ExternalGenSignature) -> Vect ((givenParams {rec:0}) .size) (Fin ((givenParams {rec:0}) .size)).targetType : ExternalGenSignature -> TypeInfo0 .targetTypeCorrect : ({rec:0} : ExternalGenSignature) -> AllTyArgsNamed (targetType {rec:0})DeriveBodyForType => ClosuringContext m => Elaboration m => SortedMap GenSignature (ExternalGenSignature, Name) => DerivationClosure mEq ExternalGenSignatureOrd ExternalGenSignature.targetType : ExternalGenSignature -> TypeInfotargetType : ExternalGenSignature -> TypeInfo0 .targetTypeCorrect : ({rec:0} : ExternalGenSignature) -> AllTyArgsNamed (targetType {rec:0})0 targetTypeCorrect : ({rec:0} : ExternalGenSignature) -> AllTyArgsNamed (targetType {rec:0}).givenParams : ({rec:0} : ExternalGenSignature) -> SortedMap (Fin (((targetType {rec:0}) .args) .length)) (ArgExplicitness, Name)givenParams : ({rec:0} : ExternalGenSignature) -> SortedMap (Fin (((targetType {rec:0}) .args) .length)) (ArgExplicitness, Name).givensOrder : ({rec:0} : ExternalGenSignature) -> Vect ((givenParams {rec:0}) .size) (Fin ((givenParams {rec:0}) .size))givensOrder : ({rec:0} : ExternalGenSignature) -> Vect ((givenParams {rec:0}) .size) (Fin ((givenParams {rec:0}) .size)).gendParamsCnt : ExternalGenSignature -> NatgendParamsCnt : ExternalGenSignature -> Nat.gendOrder : ({rec:0} : ExternalGenSignature) -> Vect (gendParamsCnt {rec:0}) (Fin (gendParamsCnt {rec:0}))gendOrder : ({rec:0} : ExternalGenSignature) -> Vect (gendParamsCnt {rec:0}) (Fin (gendParamsCnt {rec:0}))characteristics : ExternalGenSignature -> (String, List Nat)callExternalGen : (sig : ExternalGenSignature) -> Name -> TTImp -> Vect ((sig .givenParams) .size) TTImp -> TTImpinternalise : (extSig : ExternalGenSignature) -> Subset GenSignature (\sig => (sig .givenParams) .size = (extSig .givenParams) .size)