Package char-thm: Properties of Unicode characters

Information

namechar-thm
version1.23
descriptionProperties of Unicode characters
authorJoe Leslie-Hurd <joe@gilith.com>
licenseMIT
provenanceHOL Light theory extracted on 2015-04-28
checksum09594ce96d8dc7e266df993d9f92fb4d851b6e83
requiresbase
char-def
natural-bits
showData.Bool
Data.Char
Data.Pair
Function
Number.Natural
Set

Files

Theorems

surjective random

finite universe

plane = destPlane dest

position = destPosition dest

c. r. random r = c

c. n. invariant n c = mk n

finite { n. n | invariant n }

c. plane c < 17

c1 c2. dest c1 = dest c2 c1 = c2

image mk { n. n | invariant n } = universe

n. invariant n Bits.width n 21

c. n. invariant n c = mk n dest c = n

c. dest c = position c + Bits.shiftLeft (plane c) 16

c. position c < 65534

size universe = 1111998

c. dest c < 1114110

n. destPlane n = 0 n < 65536

n. invariant n n < 1114110

n.
    invariant n
    let pl destPlane n in
    let pos destPosition n in
    pos < 65534
    if ¬(pl = 0) then pl < 17
    else ¬(55296 pos pos < 57344) ¬(64976 pos pos < 65008)

External Type Operators

External Constants

Assumptions

¬

¬

bit0 0 = 0

x. x universe

t. t t

n. 0 n

n. n n

p. p

x. ¬(x )

t. t ¬t

n. 0 < suc n

(¬) = λp. p

t. (x. t) t

t. (λx. t x) = t

() = λp. p = λx.

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

t. t

t. t t

t. t

a. mk (dest a) = a

n. ¬(suc n = 0)

n. 0 * n = 0

m. m * 0 = 0

n. 0 + n = n

m. m + 0 = m

k. Bits.shiftLeft 0 k = 0

t. ( t) ¬t

t. (t ) ¬t

t. t ¬t

c. plane c = destPlane (dest c)

c. position c = destPosition (dest c)

n. bit1 n = suc (bit0 n)

m. m 0 = 1

m. m * 1 = m

m. 1 * m = m

m n. m m + n

() = λp q. p q p

x. size (insert x ) = 1

t. (t ) (t )

n. even (suc n) ¬even n

m. m 0 m = 0

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

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

m n. ¬(n + m < m)

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

r. invariant r dest (mk r) = r

n. 0 < n ¬(n = 0)

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

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

x y. x = y y = x

x y. x = y y = x

t1 t2. t1 t2 t2 t1

m n. m * n = n * m

m n. m + n = n + m

m n. m < n m n

m n. m + n - n = m

n k. Bits.shiftRight (Bits.bound n k) k = 0

s t. finite s finite (s \ t)

f s. finite s finite (image f s)

n. n 2 = n * n

n. 2 * n = n + n

m n. ¬(m < n n m)

m n. ¬(m n n < m)

m n. ¬(m < n) n m

m n. ¬(m n) n < m

m n. m < suc n m n

m n. suc m n m < n

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

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

x y. x insert y x = y

t1 t2. ¬t1 ¬t2 t2 t1

m n. m < n m div n = 0

m n. m < n m mod n = m

n1 n2. n1 n2 Bits.width n1 Bits.width n2

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

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

m n. suc m = suc n m = n

m n. m + n = m n = 0

k n. Bits.shiftLeft n k = 0 n = 0

s t. disjoint s t s t =

s t. finite t s t finite s

n. finite { m. m | m < n }

n. destPlane n = Bits.shiftRight n 16

n. destPosition n = Bits.bound n 16

k. Bits.width (2 k - 1) = k

f g x. (f g) x = f (g x)

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

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

m n. even (m * n) even m even n

m n. even (m + n) even m even n

m n. m * suc n = m + m * n

m n. m suc n = m * m n

m n. suc m * n = m * n + n

n k. Bits.shiftRight n k = 0 Bits.width n k

s t. finite (s t) finite s finite t

s t. finite s finite t finite (cross s t)

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

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

m n. m n d. n = m + d

n i. i < n r. Uniform.random n r = i

f g. (x. f x = g x) f = g

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

m n. m n m < n m = n

n k. Bits.shiftLeft n k = 2 k * n

m n. m n n m m = n

n k. Bits.bound n k + Bits.shiftLeft (Bits.shiftRight n k) k = n

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

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

n. size { m. m | m < n } = n

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

n k. Bits.width n k n < 2 k

x y z. x = y y = z x = z

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

m n p. m * (n * p) = n * (m * p)

m n p. m * (n * p) = m * n * p

m n p. m + (n + p) = m + n + p

m n p. m + n = m + p n = p

p m n. m + p = n + p m = n

m n p. n + m < p + m n < p

m n p. m + n m + p n p

m n p. n + m p + m n p

k n1 n2. Bits.shiftLeft n1 k Bits.shiftLeft n2 k n1 n2

m n p. (m * n + p) mod n = p mod n

n1 n2 k. Bits.bound (n1 + Bits.shiftLeft n2 k) k = Bits.bound n1 k

m n p. m < n n p m < p

m n p. m n n p m p

s t. s t x. x s x t

s t. (x. x s x t) s = t

m n. m suc n m = suc n m n

m n. m * n = 0 m = 0 n = 0

m n. m + n = 0 m = 0 n = 0

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

p x. x { y. y | p y } p x

m n p. m * (n + p) = m * n + m * p

m n p. m (n + p) = m n * m p

m n p. (m + n) * p = m * p + n * p

n1 n2 k.
    Bits.shiftRight (n1 + Bits.shiftLeft n2 k) k =
    Bits.shiftRight n1 k + n2

s t x. x s t x s x t

s t x. x s t x s x t

s t x. x s \ t x s ¬(x t)

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

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

s t. finite s finite t size (cross s t) = size s * size t

m n p. m * n = m * p m = 0 n = p

m n p. m * p = n * p m = n p = 0

m n p. m * n m * p m = 0 n p

y s f. y image f s x. y = f x x s

s t. finite s t s size (s \ t) = size s - size t

m n p. m * n < m * p ¬(m = 0) n < p

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

x y s t. (x, y) cross s t x s y t

a b n. ¬(n = 0) (a * n + b) div n = a + b div n

s t. finite s finite t disjoint s t size (s t) = size s + size t

f s.
    (x y. x s y s f x = f y x = y) finite s
    size (image f s) = size s

n.
    invariant n
    let pl destPlane n in
    let pos destPosition n in
    pl < 17 pos < 65534
    (pl = 0 ¬(55296 pos pos < 57344) ¬(64976 pos pos < 65008))

r.
    random r =
    let n0 Uniform.random 1111998 r in
    let n1 if n0 < 55296 then n0 else n0 + 2048 in
    let n2 if n1 < 64976 then n1 else n1 + 32 in
    let pl n2 div 65534 in
    let pos n2 mod 65534 in
    let n pos + Bits.shiftLeft pl 16 in
    mk n