src/HOL/Types_To_Sets/Types_To_Sets.thy
author wenzelm
Tue, 05 Nov 2019 14:28:00 +0100
changeset 71047 87c132cf5860
parent 69689 ab5a8a2519b0
permissions -rw-r--r--
more options;
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/Types_To_Sets.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
section \<open>From Types to Sets\<close>
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     6
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     7
text \<open>This theory extends Isabelle/HOL's logic by two new inference rules
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     8
  to allow translation of types to sets as described in
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
     9
  O. Kunčar, A. Popescu: From Types to Sets by Local Type Definitions in Higher-Order Logic
68224
1f7308050349 prefer HTTPS;
wenzelm
parents: 64551
diff changeset
    10
  available at https://www21.in.tum.de/~kuncar/documents/kuncar-popescu-t2s2016-extended.pdf.\<close>
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    11
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    12
theory Types_To_Sets
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    13
  imports Main
69689
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    14
  keywords "unoverload_definition" :: thy_decl
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    15
begin
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    16
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    17
subsection \<open>Rules\<close>
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    18
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    19
text\<open>The following file implements the Local Typedef Rule (LT) and extends the logic by the rule.\<close>
69605
a96320074298 isabelle update -u path_cartouches;
wenzelm
parents: 68428
diff changeset
    20
ML_file \<open>local_typedef.ML\<close>
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    21
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    22
text\<open>The following file implements the Unoverloading Rule (UO) and extends the logic by the rule.\<close>
69605
a96320074298 isabelle update -u path_cartouches;
wenzelm
parents: 68428
diff changeset
    23
ML_file \<open>unoverloading.ML\<close>
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    24
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    25
text\<open>The following file implements a derived rule that internalizes type class annotations.\<close>
69605
a96320074298 isabelle update -u path_cartouches;
wenzelm
parents: 68428
diff changeset
    26
ML_file \<open>internalize_sort.ML\<close>
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    27
69689
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    28
text\<open>The following file provides some automation to unoverload and internalize the parameters of
68428
46beee72fb66 a derived rule combining unoverload and internalize_sort
immler
parents: 68224
diff changeset
    29
  the sort constraints of a type variable.\<close>
46beee72fb66 a derived rule combining unoverload and internalize_sort
immler
parents: 68224
diff changeset
    30
ML_file \<open>unoverload_type.ML\<close>
46beee72fb66 a derived rule combining unoverload and internalize_sort
immler
parents: 68224
diff changeset
    31
69689
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    32
text \<open>The following file provides automation to define unoverloaded constants from overloaded
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    33
  definitions.\<close>
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    34
named_theorems unoverload_def
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    35
ML_file \<open>unoverload_def.ML\<close>
ab5a8a2519b0 automation for unverloading definitions
immler
parents: 69605
diff changeset
    36
64551
79e9587dbcca proper session HOL-Types_To_Sets;
wenzelm
parents:
diff changeset
    37
end