Coq.Proof_scriptThis module provide specialized functionality for the generation of Coq proof scripts.
After parsing the output from a termination tool, onijn keeps all the information about the term rewriting system given as input.
The data needed to generate a proof script is therefore:
Notice that up to the current version, onijn only produces proof scripts for polynomial interpretations. More functionality (adding support for more constructs) will be added when more termination techniques are supported.
val import : import -> stringval scope : scope -> stringtype sort_dec = Syntax.Ty.Sort.t listSort declaration is a list of sorts.
val sort_def_stm : sort_dec -> stringsort_def_stm sdec produces the coq string defining the inductive type for sorts.
val sort_abrv : sort_dec -> stringsort_abrv sdec produces abbreviations for each sort. So the proof script becomes more human readable.
type fn_dec = Syntax.Term.fn listThe signature (in rewriting nomenclature) is the list (or set) of each funciton symbol present in the TRS.
val fn_def_stm : fn_dec -> stringfn_def_stm fn_dec is the Coq statement defining each function symbol in fn_dec.
val arity_def_stm : fn_dec -> stringarity_def_stm fn_dec is the Coq statement defining the arity, of each function symbol in fn_dec.
val fn_abrv : fn_dec -> stringarity_def_stm fn_dec abbreviates each fn_name in fn_dec and introduce them as a list of Definition statements in the proof script.
val rules_def_stm : Syntax.Rule.trs -> stringrules_def_stm trs is the Coq statement declaring each rewriting rule in the term rewriting system trs.
val afs_df_stm : Syntax.Rule.trs -> string -> stringafs_df_stm trs is the Coq statement declaring the term rewriting system trs as a list of rules.
val itp_def_stm :
(Syntax.Term.fn * Syntax.Poly.poly_fun) list ->
string ->
stringitp_def_stm itp trs_name is the Coq statement declaring the interpretation of each funciton symbol in the the signature. The TRS is declared with the name trs_name.