Theory CR.Mgu_List
theory Mgu_List
imports
First_Order_Terms.Unification
begin
text ‹Computing the mgu of a list of term pairs.›
definition mgu_list :: "(('f, 'v) term × ('f,'v) term) list ⇒ ('f, 'v) subst option" where
"mgu_list pairs = map_option subst_of (unify pairs [])"
lemma mgu_list_None: "mgu_list pairs = None ⟹ unifiers (set pairs) = {}"
unfolding mgu_list_def by (intro unify_complete, auto)
lemma mgu_list_Some: "mgu_list pairs = Some τ ⟹ is_imgu τ (set pairs)"
unfolding mgu_list_def using unify_sound by blast
end