src/HOL/Types_To_Sets/Examples/Prerequisites.thy
author wenzelm
Mon, 12 Dec 2016 11:33:14 +0100
changeset 64551 79e9587dbcca
child 69295 b8b33ef47f40
permissions -rw-r--r--
proper session HOL-Types_To_Sets; NEWS; CONTRIBUTORS; tuned whitespace;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     1
(*  Title:      HOL/Types_To_Sets/Examples/Prerequisites.thy
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     2
    Author:     Ondřej Kunčar, TU München
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     3
*)
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     4
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     5
theory Prerequisites
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     6
  imports Main
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     7
begin
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     8
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     9
context
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    10
  fixes Rep Abs A T
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    11
  assumes type: "type_definition Rep Abs A"
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    12
  assumes T_def: "T \<equiv> (\<lambda>(x::'a) (y::'b). x = Rep y)"
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    13
begin
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    14
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    15
lemma type_definition_Domainp: "Domainp T = (\<lambda>x. x \<in> A)"
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    16
proof -
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    17
  interpret type_definition Rep Abs A by(rule type)
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    18
  show ?thesis
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    19
    unfolding Domainp_iff[abs_def] T_def fun_eq_iff
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    20
    by (metis Abs_inverse Rep)
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    21
qed
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    22
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    23
end
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    24
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    25
end