env :: String
env =
  "open MiniKanren\nopen MiniKanrenStd\ntype bottle =\n  | Fst \n  | Snd \nlet fst () = !! Fst\nlet snd () = !! Snd\ntype stepType =\n  | Fill \n  | Empty \n  | Pour \nlet fill () = !! Fill\nlet empty () = !! Empty\nlet pour () = !! Pour\ntype 'a0 gnat =\n  | O \n  | S of 'a0 \nlet rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\nmodule For_gnat =\n  (Fmap)(struct\n           let rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\n           type 'a0 t = 'a0 gnat\n         end)\nlet rec o () = inj (For_gnat.distrib O)\nand s x__0 = inj (For_gnat.distrib (S x__0))"
env :: String
env =
  "open MiniKanren\nopen MiniKanrenStd\ntype bottle =\n  | Fst \n  | Snd \nlet fst () = !! Fst\nlet snd () = !! Snd\ntype stepType =\n  | Fill \n  | Empty \n  | Pour \nlet fill () = !! Fill\nlet empty () = !! Empty\nlet pour () = !! Pour\ntype 'a0 gnat =\n  | O \n  | S of 'a0 \nlet rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\nmodule For_gnat =\n  (Fmap)(struct\n           let rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\n           type 'a0 t = 'a0 gnat\n         end)\nlet rec o () = inj (For_gnat.distrib O)\nand s x__0 = inj (For_gnat.distrib (S x__0))"
env =
  "open MiniKanren\nopen MiniKanrenStd\ntype bottle =\n  | Fst \n  | Snd \nlet fst () = !! Fst\nlet snd () = !! Snd\ntype stepType =\n  | Fill \n  | Empty \n  | Pour \nlet fill () = !! Fill\nlet empty () = !! Empty\nlet pour () = !! Pour\ntype 'a0 gnat =\n  | O \n  | S of 'a0 \nlet rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\nmodule For_gnat =\n  (Fmap)(struct\n           let rec fmap fa0 = function | O -> O | S a0 -> S (fa0 a0)\n           type 'a0 t = 'a0 gnat\n         end)\nlet rec o () = inj (For_gnat.distrib O)\nand s x__0 = inj (For_gnat.distrib (S x__0))"