Law: extend f <<< extend g = extend (f <<< extend g) Proof: RHS := extend (\ x -> f (extend g x)) y = extend (\ x -> f (extend g (sx, s))) (s'y, s') = extend (\ x -> f (\ t -> g (sx, s), s)) (s'y, s') = (\ t' -> (\ x -> f (\ t -> g (sx, s), s)) (s'y, s'), s') LHS := (extend f <<< extend g) y = extend f (extend g y) = extend f (extend g (sy, s)) = extend f (\ s' -> g (sy, s), s) = (\ t -> f (\ s' -> g (sy, s), s) , s) = TODO: finish this