|- ?rep.
TYPE_DEFINITION
(TRP
(\v tl.
(v = INL one) /\ (LENGTH tl = 0) \/
(?a. v = INR a) /\ (LENGTH tl = SUC 0)))
rep
|- (!a. ABS_string (REP_string a) = a) /\
(!r.
TRP
(\v tl.
(v = INL one) /\ (LENGTH tl = 0) \/
(?a. v = INR a) /\ (LENGTH tl = SUC 0))
r =
REP_string (ABS_string r) =
r)
|- "" = ABS_string (Node (INL one) [])
|- !a s. STRING a s = ABS_string (Node (INR a) [REP_string s])
|- !e f. ?!fn. (fn "" = e) /\ (!a s. fn (STRING a s) = f (fn s) a s)
|- !P. P "" /\ (!s. P s ==> (!a. P (STRING a s))) ==> (!s. P s)
|- !s. (s = "") \/ (?s' a. s = STRING a s')
|- !a s a' s'. (STRING a s = STRING a' s') = (a = a') /\ (s = s')
|- !s a. ~("" = STRING a s)