Implicit Types (i : ctx U) (t : term T) (ts : seq (term T)).Inductive term := Pts of nat & T | Var of nat.Inductive term := Pts of nat & T | Var of nat.Inductive term := Pts of nat & T | Var of nat.(* interpretation function for elements *)
Definition interp' i t := 
  match t with
    Pts n v => if onth (keyx i) n is Some k then pts k v else um_undef
  | Var n => if onth (varx i) n is Some f then f else um_undef
  end.Definition interp i ts := foldr (fx i) Unit ts.

(* Specifications: *)
Lemma interp_rev i ts : interp i (rev ts) = interp i ts.
Lemma pp_interp i ts : pprint i ts = interp i ts.