doStepDef :: Def
doStepDef =
    Def "doStep" ["Env0", "step0", "capacities", "q15"] (
      fresh ["f", "s"] (
        (V "Env0" === C "pair" [V "f", V "s"]) &&&
        (fresh ["t", "b"] (
          (V "step0" === C "pair" [V "t", V "b"]) &&&
          (((V "t" === C "fill" []) &&&
          (fresh ["q18", "q19"] (
              (call "get_capacity" [V "capacities", V "b", V "q18"]) &&&
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q19")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q19"))) &&&
              (call "createEnv" [V "b", V "q18", V "q19", V "q15"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q24"] (
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q24")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q24"))) &&&
              (call "createEnv" [V "b", C "o" [], V "q24", V "q15"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q30"] (
              (fresh ["q43", "q44"] (
                (call "add" [V "f", V "s", V "q43"]) &&&
                (fresh ["q46"] (
                    (call "anotherBottle" [V "b", V "q46"]) &&&
                    (call "get_capacity" [V "capacities", V "q46", V "q44"]))) &&&
                (call "greater" [V "q43", V "q44", V "q30"]))) &&&
              (((V "q30" === C "true" []) &&&
              (fresh ["q31", "q32"] (
                (fresh ["q34", "q35"] (
                    (call "add" [V "f", V "s", V "q34"]) &&&
                    (fresh ["q37"] (
                      (call "anotherBottle" [V "b", V "q37"]) &&&
                      (call "get_capacity" [V "capacities", V "q37", V "q35"]))) &&&
                    (call "sub" [V "q34", V "q35", V "q31"]))) &&&
                (fresh ["q39"] (
                    (call "anotherBottle" [V "b", V "q39"]) &&&
                    (call "get_capacity" [V "capacities", V "q39", V "q32"]))) &&&
                (call "createEnv" [V "b", V "q31", V "q32", V "q15"])))) |||
              ((V "q30" === C "false" []) &&&
              (fresh ["q41"] (
                (call "add" [V "f", V "s", V "q41"]) &&&
                (call "createEnv" [V "b", C "o" [], V "q41", V "q15"]))))))))))))
    )
doStepDef :: Def
doStepDef =
    Def "doStep" ["Env0", "step0", "capacities", "q15"] (
      fresh ["f", "s"] (
        (V "Env0" === C "pair" [V "f", V "s"]) &&&
        (fresh ["t", "b"] (
          (V "step0" === C "pair" [V "t", V "b"]) &&&
          (((V "t" === C "fill" []) &&&
          (fresh ["q18", "q19"] (
              (call "get_capacity" [V "capacities", V "b", V "q18"]) &&&
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q19")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q19"))) &&&
              (call "createEnv" [V "b", V "q18", V "q19", V "q15"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q24"] (
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q24")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q24"))) &&&
              (call "createEnv" [V "b", C "o" [], V "q24", V "q15"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q30"] (
              (fresh ["q43", "q44"] (
                (call "add" [V "f", V "s", V "q43"]) &&&
                (fresh ["q46"] (
                    (call "anotherBottle" [V "b", V "q46"]) &&&
                    (call "get_capacity" [V "capacities", V "q46", V "q44"]))) &&&
                (call "greater" [V "q43", V "q44", V "q30"]))) &&&
              (((V "q30" === C "true" []) &&&
              (fresh ["q31", "q32"] (
                (fresh ["q34", "q35"] (
                    (call "add" [V "f", V "s", V "q34"]) &&&
                    (fresh ["q37"] (
                      (call "anotherBottle" [V "b", V "q37"]) &&&
                      (call "get_capacity" [V "capacities", V "q37", V "q35"]))) &&&
                    (call "sub" [V "q34", V "q35", V "q31"]))) &&&
                (fresh ["q39"] (
                    (call "anotherBottle" [V "b", V "q39"]) &&&
                    (call "get_capacity" [V "capacities", V "q39", V "q32"]))) &&&
                (call "createEnv" [V "b", V "q31", V "q32", V "q15"])))) |||
              ((V "q30" === C "false" []) &&&
              (fresh ["q41"] (
                (call "add" [V "f", V "s", V "q41"]) &&&
                (call "createEnv" [V "b", C "o" [], V "q41", V "q15"]))))))))))))
    )
doStepDef =
    Def "doStep" ["Env0", "step0", "capacities", "q15"] (
      fresh ["f", "s"] (
        (V "Env0" === C "pair" [V "f", V "s"]) &&&
        (fresh ["t", "b"] (
          (V "step0" === C "pair" [V "t", V "b"]) &&&
          (((V "t" === C "fill" []) &&&
          (fresh ["q18", "q19"] (
              (call "get_capacity" [V "capacities", V "b", V "q18"]) &&&
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q19")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q19"))) &&&
              (call "createEnv" [V "b", V "q18", V "q19", V "q15"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q24"] (
              (((V "b" === C "fst" []) &&&
              (V "s" === V "q24")) |||
              ((V "b" === C "snd" []) &&&
              (V "f" === V "q24"))) &&&
              (call "createEnv" [V "b", C "o" [], V "q24", V "q15"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q30"] (
              (fresh ["q43", "q44"] (
                (call "add" [V "f", V "s", V "q43"]) &&&
                (fresh ["q46"] (
                    (call "anotherBottle" [V "b", V "q46"]) &&&
                    (call "get_capacity" [V "capacities", V "q46", V "q44"]))) &&&
                (call "greater" [V "q43", V "q44", V "q30"]))) &&&
              (((V "q30" === C "true" []) &&&
              (fresh ["q31", "q32"] (
                (fresh ["q34", "q35"] (
                    (call "add" [V "f", V "s", V "q34"]) &&&
                    (fresh ["q37"] (
                      (call "anotherBottle" [V "b", V "q37"]) &&&
                      (call "get_capacity" [V "capacities", V "q37", V "q35"]))) &&&
                    (call "sub" [V "q34", V "q35", V "q31"]))) &&&
                (fresh ["q39"] (
                    (call "anotherBottle" [V "b", V "q39"]) &&&
                    (call "get_capacity" [V "capacities", V "q39", V "q32"]))) &&&
                (call "createEnv" [V "b", V "q31", V "q32", V "q15"])))) |||
              ((V "q30" === C "false" []) &&&
              (fresh ["q41"] (
                (call "add" [V "f", V "s", V "q41"]) &&&
                (call "createEnv" [V "b", C "o" [], V "q41", V "q15"]))))))))))))
    )