Theory First_Order_Clause.Uprod_Literal_Functor
theory Uprod_Literal_Functor
imports Literal_Functor Uprod_Extra
begin
lemma true_lit_uprod_iff_true_lit_prod[simp]:
assumes "sym I"
shows
"upair ` I ⊫l Pos (Upair t t') ⟷ I ⊫l Pos (t, t')"
"upair ` I ⊫l Neg (Upair t t') ⟷ I ⊫l Neg (t, t')"
unfolding true_lit_simps uprod_mem_image_iff_prod_mem[OF ‹sym I›]
by simp_all
abbreviation Pos_Upair (infix "≈" 66) where
"Pos_Upair t t' ≡ Pos (Upair t t')"
abbreviation Neg_Upair (infix "!≈" 66) where
"Neg_Upair t t' ≡ Neg (Upair t t')"
abbreviation uprod_literal_to_set where "uprod_literal_to_set l ≡ ⋃(set_uprod ` set_literal l)"
lemma uprod_literal_to_set_atm_of: "uprod_literal_to_set l = set_uprod (atm_of l)"
by (cases l) auto
abbreviation map_uprod_literal where "map_uprod_literal f ≡ map_literal (map_uprod f)"
global_interpretation uprod_literal_functor: finite_natural_functor where
map = map_uprod_literal and to_set = uprod_literal_to_set
by unfold_locales (auto intro: literal.map_cong0 uprod.map_cong0)
global_interpretation uprod_literal_functor: natural_functor_conversion where
map = map_uprod_literal and to_set = uprod_literal_to_set and map_to = map_uprod_literal and
map_from = map_uprod_literal and map' = map_uprod_literal and to_set' = uprod_literal_to_set
by unfold_locales auto
type_synonym 't atom = "'t uprod"
type_synonym 't clause = "'t atom clause"
end