- 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
- 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