Constant | Type |
---|---|
BIND | :(σ -> α) -> (α -> σ -> β) -> σ -> β |
FMAP | :(α -> β) -> (σ -> α) -> σ -> β |
JOIN | :(σ -> σ -> α) -> σ -> α |
MCOMPOSE | :(α -> σ -> β) -> (β -> σ -> γ) -> α -> σ -> γ |
UNIT | :α -> β -> α |
⊢ ∀M f s. BIND M f s = f (M s) s
⊢ ∀x s. UNIT x s = x
⊢ ∀f1 f2 a. MCOMPOSE f1 f2 a = BIND (f1 a) f2
⊢ ∀f M1. FMAP f M1 = f ∘ M1
⊢ ∀MM s. JOIN MM s = MM s s
⊢ BIND m UNIT = m
⊢ BIND (UNIT x) f = f x
⊢ MCOMPOSE UNIT g = g
⊢ MCOMPOSE f UNIT = f
⊢ MCOMPOSE f (MCOMPOSE g h) = MCOMPOSE (MCOMPOSE f g) h
⊢ FMAP (λx. x) M = M ∧ FMAP I M = M
⊢ FMAP (f ∘ g) = FMAP f ∘ FMAP g
⊢ FMAP f M = BIND M (UNIT ∘ f)
⊢ BIND M f = JOIN (FMAP f M)
⊢ JOIN M = BIND M I