1 (* Title: HOL/Lifting_Sum.thy
2 Author: Brian Huffman and Ondrej Kuncar
5 header {* Setup for Lifting/Transfer for the sum type *}
8 imports Lifting Basic_BNFs
11 subsection {* Transfer rules for the Transfer package *}
15 interpretation lifting_syntax .
17 lemma Inl_transfer [transfer_rule]: "(A ===> rel_sum A B) Inl Inl"
18 unfolding rel_fun_def by simp
20 lemma Inr_transfer [transfer_rule]: "(B ===> rel_sum A B) Inr Inr"
21 unfolding rel_fun_def by simp
23 lemma case_sum_transfer [transfer_rule]:
24 "((A ===> C) ===> (B ===> C) ===> rel_sum A B ===> C) case_sum case_sum"
25 unfolding rel_fun_def rel_sum_def by (simp split: sum.split)