Theory "string"

Parents     list

Signature

Type Arity
char 0
string 0
Constant Type
alt_string_case :(char list -> 'a) -> string -> 'a
IMPLODE :char list -> string
STRCAT :string -> string -> string
isPREFIX :string -> string -> bool
STRING :char -> string -> string
STRLEN :string -> num
CHR :num -> char
string_case :'a -> (char -> string -> 'a) -> string -> 'a
EMPTYSTRING :string
ORD :char -> num
EXPLODE :string -> char list

Definitions

char_TY_DEF
|- ?rep. TYPE_DEFINITION (\n. n < 256) rep
char_BIJ
|- (!a. CHR (ORD a) = a) /\ !r. (\n. n < 256) r = (ORD (CHR r) = r)
string_TY_DEF
|- ?rep. TYPE_DEFINITION (\x. T) rep
string_bij
|- (!a. IMPLODE (EXPLODE a) = a) /\ !r. (\x. T) r = (EXPLODE (IMPLODE r) = r)
ALT_STRING_CASE_DEF
|- (!f. alt_string_case f (IMPLODE []) = f []) /\
   !f c t. alt_string_case f (IMPLODE (c::t)) = f (c::t)
EMPTYSTRING_DEF
|- "" = IMPLODE []
STRING_DEF
|- !c str. STRING c str = IMPLODE (c::EXPLODE str)
STRING_CASE_DEF
|- (!b f. case b f "" = b) /\ !b f c s. case b f (STRING c s) = f c s
STRLEN_DEF
|- (STRLEN "" = 0) /\ !c s. STRLEN (STRING c s) = 1 + STRLEN s
STRCAT
|- !s1 s2. STRCAT s1 s2 = IMPLODE (APPEND (EXPLODE s1) (EXPLODE s2))
isPREFIX
|- !s1 s2. isPREFIX s1 s2 = ?s3. s2 = STRCAT s1 s3


Theorems

CHR_ORD
|- !a. CHR (ORD a) = a
ORD_CHR
|- !r. r < 256 = (ORD (CHR r) = r)
ORD_11
|- !a a'. (ORD a = ORD a') = (a = a')
CHR_11
|- !r r'. r < 256 ==> r' < 256 ==> ((CHR r = CHR r') = (r = r'))
ORD_ONTO
|- !r. r < 256 = ?a. r = ORD a
CHR_ONTO
|- !a. ?r. (a = CHR r) /\ r < 256
ORD_BOUND
|- !c. ORD c < 256
CHAR_EQ_THM
|- !c1 c2. (c1 = c2) = (ORD c1 = ORD c2)
CHAR_INDUCT_THM
|- !P. (!n. n < 256 ==> P (CHR n)) ==> !c. P c
IMPLODE_EXPLODE
|- !a. IMPLODE (EXPLODE a) = a
EXPLODE_IMPLODE
|- !r. EXPLODE (IMPLODE r) = r
EXPLODE_ONTO
|- !r. ?a. r = EXPLODE a
IMPLODE_ONTO
|- !a. ?r. a = IMPLODE r
EXPLODE_11
|- !a a'. (EXPLODE a = EXPLODE a') = (a = a')
IMPLODE_11
|- !r r'. (IMPLODE r = IMPLODE r') = (r = r')
alt_string_Axiom
|- !b g.
     ?f.
       (f (IMPLODE []) = b) /\
       !c t. f (IMPLODE (c::t)) = g c t (f (IMPLODE t))
ALT_STRING_CASE_THM
|- !l f. alt_string_case f (IMPLODE l) = f l
STRING_11
|- !c1 c2 s1 s2. (STRING c1 s1 = STRING c2 s2) = (c1 = c2) /\ (s1 = s2)
STRING_DISTINCT
|- (!c s. ~("" = STRING c s)) /\ !c s. ~(STRING c s = "")
string_Axiom
|- !b g. ?f. (f "" = b) /\ !c t. f (STRING c t) = g c t (f t)
ALT_STRING_INDUCT_THM
|- !P.
     P (IMPLODE []) /\ (!c cl. P (IMPLODE cl) ==> P (IMPLODE (c::cl))) ==>
     !s. P s
STRING_INDUCT_THM
|- !P. P "" /\ (!s. P s ==> !c. P (STRING c s)) ==> !s. P s
STRING_ACYCLIC
|- !s c. ~(STRING c s = s) /\ ~(s = STRING c s)
ALT_STRING_CASES
|- !s. (s = IMPLODE []) \/ ?c cl. s = IMPLODE (c::cl)
STRING_CASES
|- !s. (s = "") \/ ?c str. s = STRING c str
STRING_CASE_CONG
|- !M M' b f.
     (M = M') /\ ((M' = "") ==> (b = b')) /\
     (!c s. (M' = STRING c s) ==> (f c s = f' c s)) ==>
     (case b f M = case b' f' M')
EXPLODE_EQNS
|- (EXPLODE "" = []) /\ !c s. EXPLODE (STRING c s) = c::EXPLODE s
IMPLODE_EQNS
|- (IMPLODE [] = "") /\ !c s. IMPLODE (c::t) = STRING c (IMPLODE t)
STRLEN_THM
|- !s. STRLEN s = LENGTH (EXPLODE s)
STRCAT_EQNS
|- (STRCAT "" s = s) /\ (STRCAT s "" = s) /\
   (STRCAT (STRING c s1) s2 = STRING c (STRCAT s1 s2))
STRCAT_ASSOC
|- !s1 s2 s3. STRCAT s1 (STRCAT s2 s3) = STRCAT (STRCAT s1 s2) s3
STRCAT_11
|- !s1 s2 s3.
     ((STRCAT s1 s2 = STRCAT s1 s3) = (s2 = s3)) /\
     ((STRCAT s1 s3 = STRCAT s2 s3) = (s1 = s2))
STRCAT_ACYCLIC
|- !s s1. ((s = STRCAT s s1) = (s1 = "")) /\ ((s = STRCAT s1 s) = (s1 = ""))
STRLEN_CAT
|- !x y. STRLEN (STRCAT x y) = STRLEN x + STRLEN y