Theory "state_transformer"

Parents     pair

Signature

Constant Type
JOIN :('a -> ('a -> 'b # 'a) # 'a) -> 'a -> 'b # 'a
MMAP :('c -> 'b) -> ('a -> 'c # 'a) -> 'a -> 'b # 'a
UNIT :'b -> 'a -> 'b # 'a
BIND :('a -> 'b # 'a) -> ('b -> 'a -> 'c # 'a) -> 'a -> 'c # 'a

Definitions

UNIT_DEF
|- !x. UNIT x = (\s. (x,s))
BIND_DEF
|- !g f. BIND g f = UNCURRY f o g
MMAP_DEF
|- !f m. MMAP f m = BIND m (UNIT o f)
JOIN_DEF
|- !z. JOIN z = BIND z I


Theorems

BIND_LEFT_UNIT
|- !k x. BIND (UNIT x) k = k x
UNIT_UNCURRY
|- !s. UNCURRY UNIT s = s
BIND_RIGHT_UNIT
|- !k. BIND k UNIT = k
BIND_ASSOC
|- !k m n. BIND k (\a. BIND (m a) n) = BIND (BIND k m) n
MMAP_ID
|- MMAP I = I
MMAP_COMP
|- !f g. MMAP (f o g) = MMAP f o MMAP g
MMAP_UNIT
|- !f. MMAP f o UNIT = UNIT o f
MMAP_JOIN
|- !f. MMAP f o JOIN = JOIN o MMAP (MMAP f)
JOIN_UNIT
|- JOIN o UNIT = I
JOIN_MMAP_UNIT
|- JOIN o MMAP UNIT = I
JOIN_MAP_JOIN
|- JOIN o MMAP JOIN = JOIN o JOIN
JOIN_MAP
|- !k m. BIND k m = JOIN (MMAP m k)
FST_o_UNIT
|- !x. FST o UNIT x = K x
SND_o_UNIT
|- !x. SND o UNIT x = I
FST_o_MMAP
|- !f g. FST o MMAP f g = f o FST o g