module Algorithms.Htn
( Term
, PrimitiveTask
, CompoundTask
, Task(..)
, Domain(..)
, htn
) where

import Algorithms.Htn.Internal

htn :: (PrimitiveTask a, CompoundTask b, Term c) => Domain a b c -> [c] -> [Task a b] -> ([Task a b], [c])
htn domain condition tasks = htn' domain condition tasks []