fact: Definition get_ITele : forall {T : Type} (ind : T), M (nat *m (sigT ITele)) := mfix f (T : _) : T -> M (nat *m sigT ITele)%type := mtmmatch T as T return T -> M (nat *m sigT ITele)%type with | [? (A : Type) (F : A -> Type)] forall a, F a =m> fun indFun => M.nu (FreshFrom T) mNone (fun a : A => r <- f (F a) (indFun a); let (n, sit) := r in let (sort, it) := sit in f <- abs a it; M.ret (m: S n, existT _ sort (iTele f))) | Prop =m> fun indProp => M.ret (m: 0, existT _ Propₛ (iBase (sort := Propₛ) indProp)) | Type =m> fun indType => M.ret (m: 0, existT _ (Typeₛ) (iBase (sort := Typeₛ) indType)) | Set =m> fun indType => M.ret (m: 0, existT _ (Typeₛ) (iBase (sort := Typeₛ) indType)) | T =n> fun _=> M.failwith "Impossible ITele" end.
imports: Mtac2(Logic Datatypes List Sorts Base MTeleMatch MFix) Mtac2.tactics(Tactics ImportedTactics) Strings.String