Theory Lambda_Free_RPOs
section ‹Recursive Path Orders for Lambda-Free Higher-Order Terms›
theory Lambda_Free_RPOs
imports Lambda_Free_RPO_App Lambda_Free_RPO_Optim Lambda_Encoding
begin
locale simple_rpo_instances
begin
definition arity_sym :: "nat ⇒ enat" where
"arity_sym n = ∞"
definition arity_var :: "nat ⇒ enat" where
"arity_var n = ∞"
definition ground_head_var :: "nat ⇒ nat set" where
"ground_head_var x = UNIV"
definition gt_sym :: "nat ⇒ nat ⇒ bool" where
"gt_sym g f ⟷ g > f"
sublocale app: rpo_app gt_sym len_lexext
by unfold_locales (auto simp: gt_sym_def intro: wf_less[folded wfP_def])
sublocale std: rpo ground_head_var gt_sym "λf. len_lexext" arity_sym arity_var
by unfold_locales (auto simp: arity_var_def arity_sym_def ground_head_var_def)
sublocale optim: rpo_optim ground_head_var gt_sym "λf. len_lexext" arity_sym arity_var
by unfold_locales
end
end