12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758(* This file is free software, part of Zipperposition. See file "license" for more details. *)(** {1 AST utils for dedukti} *)openLogtkmoduleA=UntypedASTmoduleT=STermincludeTtypestatement=UntypedAST.statementtypety=T.tletcasttty:term=T.app_builtinBuiltin.has_type[t;ty]letconsts=T.constsletmk_conststy:term=cast(consts)tyletmk_const_ts=mk_constsT.tTypeletvars=T.varsletmk_varsty=cast(vars)tyletmk_var_ts=mk_varsT.tTypeletvv=Vv(* Global list of type aliases *)letty_aliases:(string,ty)Hashtbl.t=Hashtbl.create16letfind_alias~or_else(s:string):ty=tryHashtbl.findty_aliasesswithNot_found->or_elseletadd_aliassty:unit=Util.debugf2"Registering alias %s := %a"(funk->ksT.ppty);Hashtbl.replacety_aliasessty(* Needed for parsing number literals *)lettype_nat=mk_const_t"dk_nat.nat"exceptionUnknown_builtinofstringexceptionBad_arityofstring*intexceptionApplication_head_is_not_a_varoftermletmk_appfl=T.appflletmk_app_constfl=T.app(T.constf)lletmk_arrow_lab=T.fun_tyabletmk_arrowab=mk_arrow_l[a]bletmk_funlt=T.lambdaltletmk_foralllt=T.forallltletmk_intx=T.int_(Z.of_stringx)letty_prop=T.propletmk_ty_decl?locidty=A.decl?locidtyletmk_assert?loc~namet=A.assert_?loc~attrs:[A.attr_namename]tletmk_goal?loc~namet=A.goal?loc~attrs:[A.attr_namename]tletmk_def?locidtybody=A.def?loc[A.mk_defidty[T.eq(mk_constidty)body]]letmk_rewrite?loct=A.rewrite?loct