Nominal/Nominal2_Base.thy
changeset 2847 5165f4552cd5
parent 2820 77e1d9f2925e
child 2848 da7e6655cd4c
equal deleted inserted replaced
2846:1d43d30e44c9 2847:5165f4552cd5
  2757 lemma exists_eq_sort: 
  2757 lemma exists_eq_sort: 
  2758   shows "\<exists>a. a \<in> {a. sort_of a \<in> range sort_fun}"
  2758   shows "\<exists>a. a \<in> {a. sort_of a \<in> range sort_fun}"
  2759   by (rule_tac x="Atom (sort_fun x) y" in exI, simp)
  2759   by (rule_tac x="Atom (sort_fun x) y" in exI, simp)
  2760 
  2760 
  2761 lemma at_base_class:
  2761 lemma at_base_class:
  2762   fixes sort_fun :: "'b \<Rightarrow>atom_sort"
  2762   fixes sort_fun :: "'b \<Rightarrow> atom_sort"
  2763   fixes Rep :: "'a \<Rightarrow> atom" and Abs :: "atom \<Rightarrow> 'a"
  2763   fixes Rep :: "'a \<Rightarrow> atom" and Abs :: "atom \<Rightarrow> 'a"
  2764   assumes type: "type_definition Rep Abs {a. sort_of a \<in> range sort_fun}"
  2764   assumes type: "type_definition Rep Abs {a. sort_of a \<in> range sort_fun}"
  2765   assumes atom_def: "\<And>a. atom a = Rep a"
  2765   assumes atom_def: "\<And>a. atom a = Rep a"
  2766   assumes permute_def: "\<And>p a. p \<bullet> a = Abs (p \<bullet> Rep a)"
  2766   assumes permute_def: "\<And>p a. p \<bullet> a = Abs (p \<bullet> Rep a)"
  2767   shows "OFCLASS('a, at_base_class)"
  2767   shows "OFCLASS('a, at_base_class)"