theory Nominal imports "HOL-Library.Infinite_Set" "HOL-Library.Old_Datatype" keywords "atom_decl" :: thy_decl and "nominal_datatype" :: thy_defn and "equivariance" :: thy_decl and "nominal_primrec" "nominal_inductive" "nominal_inductive2" :: thy_goal_defn and "avoids" begin declare [[typedef_overloaded]] section ‹Permutations› (*======================*) type_synonym 'x prm = "('x × 'x) list" (* polymorphic constants for permutation and swapping *) consts perm :: "'x prm ⇒ 'a ⇒ 'a" (infixr ‹∙› 80) swap :: "('x × 'x) ⇒ 'x ⇒ 'x" (* a "private" copy of the option type used in the abstraction function *)