Package parser-stream-thm: Properties of parse streams

Information

nameparser-stream-thm
version1.106
descriptionProperties of parse streams
authorJoe Leslie-Hurd <joe@gilith.com>
licenseMIT
provenanceHOL Light theory extracted on 2015-04-28
checksumdbe9412d5808667619f5676816f0c342074ef4c1
requiresbase
parser-stream-def
showData.Bool
Data.List
Data.Pair
Function
Number.Natural
Parser.Stream
Relation

Files

Theorems

wellFounded isProperSuffix

¬(error = eof)

fromList [] = eof

xs. isSuffix xs xs

xs. ¬isProperSuffix xs xs

l. length (fromList l) = length l

l. toList (fromList l) = (l, )

xs. length xs = length (fst (toList xs))

xs. isSuffix xs eof xs = eof

xs. isSuffix xs error xs = error

x xs. ¬(eof = cons x xs)

x xs. ¬(error = cons x xs)

xs ys. isProperSuffix xs ys isSuffix xs ys

h t. fromList (h :: t) = cons h (fromList t)

l1 l2. fromList (l1 @ l2) = append l1 (fromList l2)

xs ys. isProperSuffix xs ys length xs < length ys

xs ys. isSuffix xs ys length xs length ys

l xs. length (append l xs) = length l + length xs

xs ys zs. append (xs @ ys) zs = append xs (append ys zs)

xs ys zs.
    isProperSuffix xs ys isProperSuffix ys zs isProperSuffix xs zs

xs ys zs. isProperSuffix xs ys isSuffix ys zs isProperSuffix xs zs

xs ys zs. isSuffix xs ys isProperSuffix ys zs isProperSuffix xs zs

xs ys zs. isSuffix xs ys isSuffix ys zs isSuffix xs zs

xs ys e. toList xs = (ys, e) length xs = length ys

surjective (λ(l, b). append l (if b then error else eof))

xs. xs = error xs = eof x xt. xs = cons x xt

p. (xs. (ys. isProperSuffix ys xs p ys) p xs) xs. p xs

x xs y ys. cons x xs = cons y ys x = y xs = ys

l xs ys e. toList (append l xs) = (l @ ys, e) toList xs = (ys, e)

f xs ys e. toList xs = (ys, e) toList (map f xs) = (map f ys, e)

length error = 0 length eof = 0
  x xs. length (cons x xs) = length xs + 1

(xs. append [] xs = xs)
  h t xs. append (h :: t) xs = cons h (append t xs)

(f. map f error = error) (f. map f eof = eof)
  f x xs. map f (cons x xs) = cons (f x) (map f xs)

h.
    (f g xs.
       (ys. isProperSuffix ys xs f ys = g ys) h f xs = h g xs)
    fn. xs. fn xs = h fn xs

toList error = ([], ) toList eof = ([], )
  x xs. toList (cons x xs) = let (l, e) toList xs in (x :: l, e)

(e b f. case e b f error = e) (e b f. case e b f eof = b)
  e b f x xs. case e b f (cons x xs) = f x xs

External Type Operators

External Constants

Assumptions

¬

¬

length [] = 0

bit0 0 = 0

length eof = 0

length error = 0

t. t t

n. n n

m. wellFounded (measure m)

p. p

x. id x = x

t. t ¬t

xs. ¬isProperSuffix xs eof

xs. ¬isProperSuffix xs error

(¬) = λp. p

t. (x. t) t

t. (λx. t x) = t

() = λp. p = λx.

toList eof = ([], )

toList error = ([], )

t. ¬¬t t

t. ( t) t

t. t

t. t t

t. t

t. t t

t. t

t. t t

t. t

t. t t

t. t

t. t t

t. t

n. 0 + n = n

m. m + 0 = m

l. [] @ l = l

xs. append [] xs = xs

f. map f [] = []

f. map f eof = eof

f. map f error = error

r. wellFounded r irreflexive r

t. ( t) ¬t

t. (t ) ¬t

t. t ¬t

n. bit1 n = suc (bit0 n)

l. fromList l = append l eof

() = λp q. p q p

t. (t ) (t )

m. suc m = m + 1

x. (fst x, snd x) = x

t1 t2. (if then t1 else t2) = t2

t1 t2. (if then t1 else t2) = t1

h t. ¬(h :: t = [])

p x. p x p ((select) p)

n. bit0 (suc n) = suc (suc (bit0 n))

f y. (let x y in f x) = f y

x. a b. x = (a, b)

x y. x = y y = x

t1 t2. t1 t2 t2 t1

m n. m + n = n + m

m n. m < n m n

r x. irreflexive r ¬r x x

h t. length (h :: t) = suc (length t)

x xs. length (cons x xs) = suc (length xs)

m n. ¬(m n) n < m

m n. m < suc n m n

() = λp q. (λf. f p q) = λf. f

e b f. case e b f eof = b

e b f. case e b f error = e

f. surjective f y. x. y = f x

p. ¬(x. p x) x. ¬p x

p. ¬(x. p x) x. ¬p x

() = λp. q. (x. p x q) q

t1 t2. ¬(t1 t2) t1 ¬t2

m n. m + suc n = suc (m + n)

m n. suc m + n = suc (m + n)

r s. subrelation r s wellFounded s wellFounded r

t1 t2. ¬(t1 t2) ¬t1 ¬t2

p. (x. p x) a b. p (a, b)

xs y ys. isProperSuffix xs (cons y ys) isSuffix xs ys

() = λp q. r. (p r) (q r) r

m n. m n n m m = n

xs ys. isSuffix xs ys xs = ys isProperSuffix xs ys

f. fn. a b. fn (a, b) = f a b

m n. m < n d. n = m + suc d

m x y. measure m x y m x < m y

p q. (x. p q x) p x. q x

p q. (x. p q x) p x. q x

p q. p (x. q x) x. p q x

p q. p (x. q x) x. p q x

p q. p (x. q x) x. p q x

p q. p (x. q x) x. p q x

p q. (x. p x) q x. p x q

p q. (x. p x) q x. p x q

h t xs. append (h :: t) xs = cons h (append t xs)

t1 t2 t3. (t1 t2) t3 t1 t2 t3

t1 t2 t3. (t1 t2) t3 t1 t2 t3

l h t. (h :: t) @ l = h :: t @ l

r. (x. y. r x y) f. x. r x (f x)

f h t. map f (h :: t) = f h :: map f t

f x xs. map f (cons x xs) = cons (f x) (map f xs)

p. p 0 (n. p n p (suc n)) n. p n

r s. subrelation r s x y. r x y s x y

(∃!) = λp. () p x y. p x p y x = y

e b f x xs. case e b f (cons x xs) = f x xs

p q. (x. p x q x) (x. p x) x. q x

p q. (x. p x q x) (x. p x) x. q x

p q. (x. p x q x) (x. p x) x. q x

p. p [] (h t. p t p (h :: t)) l. p l

h1 h2 t1 t2. h1 :: t1 = h2 :: t2 h1 = h2 t1 = t2

a b a' b'. (a, b) = (a', b') a = a' b = b'

p1 p2 q1 q2. (p1 p2) (q1 q2) p1 q1 p2 q2

p1 p2 q1 q2. (p2 p1) (q1 q2) (p1 q1) p2 q2

p. p error p eof (x xs. p xs p (cons x xs)) xs. p xs

r. wellFounded r p. (x. (y. r y x p y) p x) x. p x

x xs. toList (cons x xs) = let (l, e) toList xs in (x :: l, e)

e b f.
    fn. fn error = e fn eof = b x xs. fn (cons x xs) = f x xs (fn xs)