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