src/HOL/HOLCF/Powerdomains.thy
author huffman
Sat, 27 Nov 2010 16:08:10 -0800
changeset 41022 0437dbc127b3
parent 40985 src/HOLCF/Powerdomains.thy@2037021f034f
child 41537 f655912ac235
permissions -rw-r--r--
moved directory src/HOLCF to src/HOL/HOLCF;
added HOLCF theories to src/HOL/IsaMakefile;
huffman@35459
     1
(*  Title:      HOLCF/Powerdomains.thy
huffman@35459
     2
    Author:     Brian Huffman
huffman@35459
     3
*)
huffman@35459
     4
huffman@35459
     5
header {* Powerdomains *}
huffman@35459
     6
huffman@35459
     7
theory Powerdomains
huffman@40155
     8
imports ConvexPD Domain
huffman@35459
     9
begin
huffman@35459
    10
huffman@35459
    11
lemma isodefl_upper:
huffman@40170
    12
  "isodefl d t \<Longrightarrow> isodefl (upper_map\<cdot>d) (upper_defl\<cdot>t)"
huffman@35459
    13
apply (rule isodeflI)
huffman@40170
    14
apply (simp add: cast_upper_defl cast_isodefl)
huffman@35459
    15
apply (simp add: emb_upper_pd_def prj_upper_pd_def)
huffman@35459
    16
apply (simp add: upper_map_map)
huffman@35459
    17
done
huffman@35459
    18
huffman@35459
    19
lemma isodefl_lower:
huffman@40170
    20
  "isodefl d t \<Longrightarrow> isodefl (lower_map\<cdot>d) (lower_defl\<cdot>t)"
huffman@35459
    21
apply (rule isodeflI)
huffman@40170
    22
apply (simp add: cast_lower_defl cast_isodefl)
huffman@35459
    23
apply (simp add: emb_lower_pd_def prj_lower_pd_def)
huffman@35459
    24
apply (simp add: lower_map_map)
huffman@35459
    25
done
huffman@35459
    26
huffman@35459
    27
lemma isodefl_convex:
huffman@40170
    28
  "isodefl d t \<Longrightarrow> isodefl (convex_map\<cdot>d) (convex_defl\<cdot>t)"
huffman@35459
    29
apply (rule isodeflI)
huffman@40170
    30
apply (simp add: cast_convex_defl cast_isodefl)
huffman@35459
    31
apply (simp add: emb_convex_pd_def prj_convex_pd_def)
huffman@35459
    32
apply (simp add: convex_map_map)
huffman@35459
    33
done
huffman@35459
    34
huffman@35459
    35
subsection {* Domain package setup for powerdomains *}
huffman@35459
    36
huffman@40457
    37
lemmas [domain_defl_simps] = DEFL_upper DEFL_lower DEFL_convex
huffman@40457
    38
lemmas [domain_map_ID] = upper_map_ID lower_map_ID convex_map_ID
huffman@40457
    39
lemmas [domain_isodefl] = isodefl_upper isodefl_lower isodefl_convex
huffman@40457
    40
huffman@40457
    41
lemmas [domain_deflation] =
huffman@40457
    42
  deflation_upper_map deflation_lower_map deflation_convex_map
huffman@40457
    43
huffman@35459
    44
setup {*
huffman@40985
    45
  fold Domain_Take_Proofs.add_rec_type
huffman@40985
    46
    [(@{type_name "upper_pd"}, [true]),
huffman@40985
    47
     (@{type_name "lower_pd"}, [true]),
huffman@40985
    48
     (@{type_name "convex_pd"}, [true])]
huffman@35459
    49
*}
huffman@35459
    50
huffman@35459
    51
end