checkStepDef :: Def
checkStepDef =
    Def "checkStep" ["Env0", "step0", "capacities", "q48"] (
      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 ["q51"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q51")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q51"))) &&&
              (call "fancyEq" [V "q51", C "o" [], V "q48"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q56", "q57"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q56")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q56"))) &&&
              (call "get_capacity" [V "capacities", V "b", V "q57"]) &&&
              (call "fancyEq" [V "q56", V "q57", V "q48"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q62"] (
              (fresh ["q66", "q67"] (
                (fresh ["q72"] (
                    (((V "b" === C "fst" []) &&&
                    (V "f" === V "q72")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "s" === V "q72"))) &&&
                    (call "fancyEq" [V "q72", C "o" [], V "q66"]))) &&&
                (fresh ["q77", "q78"] (
                    (((V "b" === C "fst" []) &&&
                    (V "s" === V "q77")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "f" === V "q77"))) &&&
                    (fresh ["q83"] (
                      (call "anotherBottle" [V "b", V "q83"]) &&&
                      (call "get_capacity" [V "capacities", V "q83", V "q78"]))) &&&
                    (call "fancyEq" [V "q77", V "q78", V "q67"]))) &&&
                (((V "q66" === C "true" []) &&&
                (V "q62" === C "true" [])) |||
                ((V "q66" === C "false" []) &&&
                (V "q62" === V "q67"))))) &&&
              (((V "q62" === C "true" []) &&&
              (V "q48" === C "false" [])) |||
              ((V "q62" === C "false" []) &&&
              (V "q48" === C "true" []))))))))))
    )
checkStepDef :: Def
checkStepDef =
    Def "checkStep" ["Env0", "step0", "capacities", "q48"] (
      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 ["q51"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q51")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q51"))) &&&
              (call "fancyEq" [V "q51", C "o" [], V "q48"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q56", "q57"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q56")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q56"))) &&&
              (call "get_capacity" [V "capacities", V "b", V "q57"]) &&&
              (call "fancyEq" [V "q56", V "q57", V "q48"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q62"] (
              (fresh ["q66", "q67"] (
                (fresh ["q72"] (
                    (((V "b" === C "fst" []) &&&
                    (V "f" === V "q72")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "s" === V "q72"))) &&&
                    (call "fancyEq" [V "q72", C "o" [], V "q66"]))) &&&
                (fresh ["q77", "q78"] (
                    (((V "b" === C "fst" []) &&&
                    (V "s" === V "q77")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "f" === V "q77"))) &&&
                    (fresh ["q83"] (
                      (call "anotherBottle" [V "b", V "q83"]) &&&
                      (call "get_capacity" [V "capacities", V "q83", V "q78"]))) &&&
                    (call "fancyEq" [V "q77", V "q78", V "q67"]))) &&&
                (((V "q66" === C "true" []) &&&
                (V "q62" === C "true" [])) |||
                ((V "q66" === C "false" []) &&&
                (V "q62" === V "q67"))))) &&&
              (((V "q62" === C "true" []) &&&
              (V "q48" === C "false" [])) |||
              ((V "q62" === C "false" []) &&&
              (V "q48" === C "true" []))))))))))
    )
checkStepDef =
    Def "checkStep" ["Env0", "step0", "capacities", "q48"] (
      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 ["q51"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q51")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q51"))) &&&
              (call "fancyEq" [V "q51", C "o" [], V "q48"])))) |||
          ((V "t" === C "empty" []) &&&
          (fresh ["q56", "q57"] (
              (((V "b" === C "fst" []) &&&
              (V "f" === V "q56")) |||
              ((V "b" === C "snd" []) &&&
              (V "s" === V "q56"))) &&&
              (call "get_capacity" [V "capacities", V "b", V "q57"]) &&&
              (call "fancyEq" [V "q56", V "q57", V "q48"])))) |||
          ((V "t" === C "pour" []) &&&
          (fresh ["q62"] (
              (fresh ["q66", "q67"] (
                (fresh ["q72"] (
                    (((V "b" === C "fst" []) &&&
                    (V "f" === V "q72")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "s" === V "q72"))) &&&
                    (call "fancyEq" [V "q72", C "o" [], V "q66"]))) &&&
                (fresh ["q77", "q78"] (
                    (((V "b" === C "fst" []) &&&
                    (V "s" === V "q77")) |||
                    ((V "b" === C "snd" []) &&&
                    (V "f" === V "q77"))) &&&
                    (fresh ["q83"] (
                      (call "anotherBottle" [V "b", V "q83"]) &&&
                      (call "get_capacity" [V "capacities", V "q83", V "q78"]))) &&&
                    (call "fancyEq" [V "q77", V "q78", V "q67"]))) &&&
                (((V "q66" === C "true" []) &&&
                (V "q62" === C "true" [])) |||
                ((V "q66" === C "false" []) &&&
                (V "q62" === V "q67"))))) &&&
              (((V "q62" === C "true" []) &&&
              (V "q48" === C "false" [])) |||
              ((V "q62" === C "false" []) &&&
              (V "q48" === C "true" []))))))))))
    )