src/HOL/Data_Structures/Array_Specs.thy
author wenzelm
Sun, 13 Dec 2020 23:11:41 +0100
changeset 72907 3883f536d84d
parent 69145 806be481aa57
permissions -rw-r--r--
unused (see 29566b6810f7);
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
69145
806be481aa57 added Array files
nipkow
parents:
diff changeset
     1
theory Array_Specs
806be481aa57 added Array files
nipkow
parents:
diff changeset
     2
imports Main
806be481aa57 added Array files
nipkow
parents:
diff changeset
     3
begin
806be481aa57 added Array files
nipkow
parents:
diff changeset
     4
806be481aa57 added Array files
nipkow
parents:
diff changeset
     5
text \<open>Array Specifications\<close>
806be481aa57 added Array files
nipkow
parents:
diff changeset
     6
806be481aa57 added Array files
nipkow
parents:
diff changeset
     7
locale Array =
806be481aa57 added Array files
nipkow
parents:
diff changeset
     8
fixes lookup :: "'ar \<Rightarrow> nat \<Rightarrow> 'a"
806be481aa57 added Array files
nipkow
parents:
diff changeset
     9
fixes update :: "nat \<Rightarrow> 'a \<Rightarrow> 'ar \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    10
fixes len :: "'ar \<Rightarrow> nat"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    11
fixes array :: "'a list \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    12
806be481aa57 added Array files
nipkow
parents:
diff changeset
    13
fixes list :: "'ar \<Rightarrow> 'a list"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    14
fixes invar :: "'ar \<Rightarrow> bool"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    15
806be481aa57 added Array files
nipkow
parents:
diff changeset
    16
assumes lookup: "invar ar \<Longrightarrow> n < len ar \<Longrightarrow> lookup ar n = list ar ! n"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    17
assumes update: "invar ar \<Longrightarrow> n < len ar \<Longrightarrow> list(update n x ar) = (list ar)[n:=x]"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    18
assumes len_array: "invar ar \<Longrightarrow> len ar = length (list ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    19
assumes array: "list (array xs) = xs"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    20
806be481aa57 added Array files
nipkow
parents:
diff changeset
    21
assumes invar_update: "invar ar \<Longrightarrow> n < len ar \<Longrightarrow> invar(update n x ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    22
assumes invar_array: "invar(array xs)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    23
806be481aa57 added Array files
nipkow
parents:
diff changeset
    24
locale Array_Flex = Array +
806be481aa57 added Array files
nipkow
parents:
diff changeset
    25
fixes add_lo :: "'a \<Rightarrow> 'ar \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    26
fixes del_lo :: "'ar \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    27
fixes add_hi :: "'a \<Rightarrow> 'ar \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    28
fixes del_hi :: "'ar \<Rightarrow> 'ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    29
806be481aa57 added Array files
nipkow
parents:
diff changeset
    30
assumes add_lo: "invar ar \<Longrightarrow> list(add_lo a ar) = a # list ar"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    31
assumes del_lo: "invar ar \<Longrightarrow> list(del_lo ar) = tl (list ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    32
assumes add_hi: "invar ar \<Longrightarrow> list(add_hi a ar) = list ar @ [a]"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    33
assumes del_hi: "invar ar \<Longrightarrow> list(del_hi ar) = butlast (list ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    34
806be481aa57 added Array files
nipkow
parents:
diff changeset
    35
assumes invar_add_lo: "invar ar \<Longrightarrow> invar (add_lo a ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    36
assumes invar_del_lo: "invar ar \<Longrightarrow> invar (del_lo ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    37
assumes invar_add_hi: "invar ar \<Longrightarrow> invar (add_hi a ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    38
assumes invar_del_hi: "invar ar \<Longrightarrow> invar (del_hi ar)"
806be481aa57 added Array files
nipkow
parents:
diff changeset
    39
806be481aa57 added Array files
nipkow
parents:
diff changeset
    40
end