
regular tree grammar
  start Strategy Module
  productions
    ListStarOfTerm0          -> ListPlusOfTerm0
    ListStarOfTerm0          -> <nil>()
    ListStarOfTerm0          -> <conc>(ListStarOfTerm0,ListStarOfTerm0)
    ListPlusOfTerm0          -> <conc>(ListStarOfTerm0,ListPlusOfTerm0)
    ListPlusOfTerm0          -> <conc>(ListPlusOfTerm0,ListStarOfTerm0)
    ListPlusOfTerm0          -> <conc>(ListPlusOfTerm0,ListPlusOfTerm0)
    ListPlusOfTerm0          -> <cons>(Term,ListStarOfTerm0)
    ListStarOfId0            -> ListPlusOfId0
    ListStarOfId0            -> <nil>()
    ListStarOfId0            -> <conc>(ListStarOfId0,ListStarOfId0)
    ListPlusOfId0            -> <conc>(ListStarOfId0,ListPlusOfId0)
    ListPlusOfId0            -> <conc>(ListPlusOfId0,ListStarOfId0)
    ListPlusOfId0            -> <conc>(ListPlusOfId0,ListPlusOfId0)
    ListPlusOfId0            -> <cons>(Id,ListStarOfId0)
    ListStarOfTypedid0       -> ListPlusOfTypedid0
    ListStarOfTypedid0       -> <nil>()
    ListStarOfTypedid0       -> <conc>(ListStarOfTypedid0,ListStarOfTypedid0)
    ListPlusOfTypedid0       -> <conc>(ListStarOfTypedid0,ListPlusOfTypedid0)
    ListPlusOfTypedid0       -> <conc>(ListPlusOfTypedid0,ListStarOfTypedid0)
    ListPlusOfTypedid0       -> <conc>(ListPlusOfTypedid0,ListPlusOfTypedid0)
    ListPlusOfTypedid0       -> <cons>(Typedid,ListStarOfTypedid0)
    ListStarOfOverlay0       -> ListPlusOfOverlay0
    ListStarOfOverlay0       -> <nil>()
    ListStarOfOverlay0       -> <conc>(ListStarOfOverlay0,ListStarOfOverlay0)
    ListPlusOfOverlay0       -> <conc>(ListStarOfOverlay0,ListPlusOfOverlay0)
    ListPlusOfOverlay0       -> <conc>(ListPlusOfOverlay0,ListStarOfOverlay0)
    ListPlusOfOverlay0       -> <conc>(ListPlusOfOverlay0,ListPlusOfOverlay0)
    ListPlusOfOverlay0       -> <cons>(Overlay,ListStarOfOverlay0)
    ListStarOfDef0           -> ListPlusOfDef0
    ListStarOfDef0           -> <nil>()
    ListStarOfDef0           -> <conc>(ListStarOfDef0,ListStarOfDef0)
    ListPlusOfDef0           -> <conc>(ListStarOfDef0,ListPlusOfDef0)
    ListPlusOfDef0           -> <conc>(ListPlusOfDef0,ListStarOfDef0)
    ListPlusOfDef0           -> <conc>(ListPlusOfDef0,ListPlusOfDef0)
    ListPlusOfDef0           -> <cons>(Def,ListStarOfDef0)
    ListStarOfRuleCond0      -> ListPlusOfRuleCond0
    ListStarOfRuleCond0      -> <nil>()
    ListStarOfRuleCond0      -> <conc>(ListStarOfRuleCond0,ListStarOfRuleCond0)
    ListPlusOfRuleCond0      -> <conc>(ListStarOfRuleCond0,ListPlusOfRuleCond0)
    ListPlusOfRuleCond0      -> <conc>(ListPlusOfRuleCond0,ListStarOfRuleCond0)
    ListPlusOfRuleCond0      -> <conc>(ListPlusOfRuleCond0,ListPlusOfRuleCond0)
    ListPlusOfRuleCond0      -> <cons>(RuleCond,ListStarOfRuleCond0)
    ListStarOfStrategy0      -> ListPlusOfStrategy0
    ListStarOfStrategy0      -> <nil>()
    ListStarOfStrategy0      -> <conc>(ListStarOfStrategy0,ListStarOfStrategy0)
    ListPlusOfStrategy0      -> <conc>(ListStarOfStrategy0,ListPlusOfStrategy0)
    ListPlusOfStrategy0      -> <conc>(ListPlusOfStrategy0,ListStarOfStrategy0)
    ListPlusOfStrategy0      -> <conc>(ListPlusOfStrategy0,ListPlusOfStrategy0)
    ListPlusOfStrategy0      -> <cons>(Strategy,ListStarOfStrategy0)
    ListStarOfSort0          -> ListPlusOfSort0
    ListStarOfSort0          -> <nil>()
    ListStarOfSort0          -> <conc>(ListStarOfSort0,ListStarOfSort0)
    ListPlusOfSort0          -> <conc>(ListStarOfSort0,ListPlusOfSort0)
    ListPlusOfSort0          -> <conc>(ListPlusOfSort0,ListStarOfSort0)
    ListPlusOfSort0          -> <conc>(ListPlusOfSort0,ListPlusOfSort0)
    ListPlusOfSort0          -> <cons>(Sort,ListStarOfSort0)
    ListStarOfSdecl0         -> ListPlusOfSdecl0
    ListStarOfSdecl0         -> <nil>()
    ListStarOfSdecl0         -> <conc>(ListStarOfSdecl0,ListStarOfSdecl0)
    ListPlusOfSdecl0         -> <conc>(ListStarOfSdecl0,ListPlusOfSdecl0)
    ListPlusOfSdecl0         -> <conc>(ListPlusOfSdecl0,ListStarOfSdecl0)
    ListPlusOfSdecl0         -> <conc>(ListPlusOfSdecl0,ListPlusOfSdecl0)
    ListPlusOfSdecl0         -> <cons>(Sdecl,ListStarOfSdecl0)
    ListStarOfImportModName0 -> ListPlusOfImportModName0
    ListStarOfImportModName0 -> <nil>()
    ListStarOfImportModName0 -> <conc>(ListStarOfImportModName0,ListStarOfImportModName0)
    ListPlusOfImportModName0 -> <conc>(ListStarOfImportModName0,ListPlusOfImportModName0)
    ListPlusOfImportModName0 -> <conc>(ListPlusOfImportModName0,ListStarOfImportModName0)
    ListPlusOfImportModName0 -> <conc>(ListPlusOfImportModName0,ListPlusOfImportModName0)
    ListPlusOfImportModName0 -> <cons>(ImportModName,ListStarOfImportModName0)
    ListStarOfDecl0          -> ListPlusOfDecl0
    ListStarOfDecl0          -> <nil>()
    ListStarOfDecl0          -> <conc>(ListStarOfDecl0,ListStarOfDecl0)
    ListPlusOfDecl0          -> <conc>(ListStarOfDecl0,ListPlusOfDecl0)
    ListPlusOfDecl0          -> <conc>(ListPlusOfDecl0,ListStarOfDecl0)
    ListPlusOfDecl0          -> <conc>(ListPlusOfDecl0,ListPlusOfDecl0)
    ListPlusOfDecl0          -> <cons>(Decl,ListStarOfDecl0)
    ListStarOfID0            -> ListPlusOfID0
    ListStarOfID0            -> <nil>()
    ListStarOfID0            -> <conc>(ListStarOfID0,ListStarOfID0)
    ListPlusOfID0            -> <conc>(ListStarOfID0,ListPlusOfID0)
    ListPlusOfID0            -> <conc>(ListPlusOfID0,ListStarOfID0)
    ListPlusOfID0            -> <conc>(ListPlusOfID0,ListPlusOfID0)
    ListPlusOfID0            -> <cons>(ID,ListStarOfID0)
    ListStarOfArgType0       -> ListPlusOfArgType0
    ListStarOfArgType0       -> <nil>()
    ListStarOfArgType0       -> <conc>(ListStarOfArgType0,ListStarOfArgType0)
    ListPlusOfArgType0       -> <conc>(ListStarOfArgType0,ListPlusOfArgType0)
    ListPlusOfArgType0       -> <conc>(ListPlusOfArgType0,ListStarOfArgType0)
    ListPlusOfArgType0       -> <conc>(ListPlusOfArgType0,ListPlusOfArgType0)
    ListPlusOfArgType0       -> <cons>(ArgType,ListStarOfArgType0)
    ListStarOfOpdecl0        -> ListPlusOfOpdecl0
    ListStarOfOpdecl0        -> <nil>()
    ListStarOfOpdecl0        -> <conc>(ListStarOfOpdecl0,ListStarOfOpdecl0)
    ListPlusOfOpdecl0        -> <conc>(ListStarOfOpdecl0,ListPlusOfOpdecl0)
    ListPlusOfOpdecl0        -> <conc>(ListPlusOfOpdecl0,ListStarOfOpdecl0)
    ListPlusOfOpdecl0        -> <conc>(ListPlusOfOpdecl0,ListPlusOfOpdecl0)
    ListPlusOfOpdecl0        -> <cons>(Opdecl,ListStarOfOpdecl0)
    ListStarOfSort1          -> ListPlusOfSort1
    ListStarOfSort1          -> <nil>()
    ListStarOfSort1          -> <conc>(ListStarOfSort1,ListStarOfSort1)
    ListPlusOfSort1          -> <conc>(ListStarOfSort1,ListPlusOfSort1)
    ListPlusOfSort1          -> <conc>(ListPlusOfSort1,ListStarOfSort1)
    ListPlusOfSort1          -> <conc>(ListPlusOfSort1,ListPlusOfSort1)
    ListPlusOfSort1          -> <cons>(Sort,ListStarOfSort1)
    Def                      -> RuleDef
    Decl                     -> Overlays(ListStarOfOverlay0)
    Decl                     -> Rules(ListStarOfDef0)
    RuleCond                 -> WithClause(Strategy)
    RuleCond                 -> WhereClause(Strategy)
    Rule                     -> Rule(Term,Term,ListPlusOfRuleCond0)
    Rule                     -> Rule(Term,Term,Strategy)
    Rule                     -> RuleNoCond(Term,Term)
    RuleDef                  -> RDefT(Id,ListStarOfTypedid0,ListStarOfTypedid0,Rule)
    RuleDef                  -> RDef(Id,ListStarOfTypedid0,Rule)
    RuleDef                  -> RDefNoArgs(Id,Rule)
    Overlay                  -> Overlay(Id,ListStarOfId0,Term)
    Strategy                 -> Assign(Term,Term)
    Strategy                 -> IfThen(Strategy,Strategy)
    Strategy                 -> Choice(Strategy,Strategy)
    Strategy                 -> SRule(Rule)
    Strategy                 -> LRule(Rule)
    Strategy                 -> Test(Strategy)
    Strategy                 -> With(Strategy)
    Strategy                 -> Where(Strategy)
    Strategy                 -> Not(Strategy)
    Strategy                 -> Rec(Id,Strategy)
    Strategy                 -> LChoice(Strategy,Strategy)
    StrategyAngle            -> Strategy
    Strategy                 -> ScopeDefault(Strategy)
    Strategy                 -> Call(SVar,ListStarOfStrategy0)
    Typedid                  -> DefaultVarDec(ID)
    Sort                     -> SortTuple(ListStarOfSort0)
    Sort                     -> SortListTl(ListStarOfSort0,Sort)
    Sort                     -> SortList(ListStarOfSort0)
    Term                     -> RootApp(StrategyAngle)
    PreTerm                  -> RootApp(StrategyAngle)
    Term                     -> App(Strategy,Term)
    PreTerm                  -> App(Strategy,Term)
    Term                     -> BuildDefault(Term)
    PreTerm                  -> BuildDefaultPT(PreTerm)
    ID                       -> LID
    Var                      -> Var(LID)
    LID                      -> ListVar(LId)
    ImportModName            -> ImportWildcard(ModName)
    ImportModName            -> Import(ModName)
    Decl                     -> Signature(ListStarOfSdecl0)
    Decl                     -> Strategies(ListStarOfDef0)
    Decl                     -> Imports(ListStarOfImportModName0)
    Module                   -> Specification(ListStarOfDecl0)
    Module                   -> Module(ModName,ListStarOfDecl0)
    Strategy                 -> ImportTerm(ModName)
    Strategy                 -> All(Strategy)
    Strategy                 -> One(Strategy)
    Strategy                 -> Some(Strategy)
    Strategy                 -> PrimT(String,ListStarOfStrategy0,ListStarOfTerm0)
    StrategyMid              -> Strategy
    Strategy                 -> GuardedLChoice(Strategy,StrategyMid,Strategy)
    Strategy                 -> Seq(Strategy,Strategy)
    Strategy                 -> Scope(ListStarOfID0,Strategy)
    Strategy                 -> Build(Term)
    Strategy                 -> Match(Term)
    Strategy                 -> Id()
    Strategy                 -> Fail()
    Typedid                  -> VarDec(ID,Type)
    StrategyDef              -> ExtSDef(Id,ListStarOfTypedid0,ListStarOfTypedid0)
    StrategyDef              -> ExtSDefInl(Id,ListStarOfTypedid0,ListStarOfTypedid0,Strategy)
    StrategyDef              -> SDefT(Id,ListStarOfTypedid0,ListStarOfTypedid0,Strategy)
    Strategy                 -> CallDynamic(Term,ListStarOfStrategy0,ListStarOfTerm0)
    Strategy                 -> CallT(SVar,ListStarOfStrategy0,ListStarOfTerm0)
    Strategy                 -> Let(ListStarOfDef0,Strategy)
    SVar                     -> SVar(Id)
    Def                      -> StrategyDef
    Type                     -> ConstType
    Type                     -> FunType
    RetType                  -> Type
    ArgType                  -> ConstType
    ArgType                  -> Type
    FunType                  -> FunType(ListPlusOfArgType0,RetType)
    ConstType                -> ConstType(Sort)
    Opdecl                   -> ExtOpDeclInj(Type)
    Opdecl                   -> ExtOpDeclQ(String,Type)
    Opdecl                   -> ExtOpDecl(Id,Type)
    Opdecl                   -> OpDeclInj(Type)
    Opdecl                   -> OpDeclQ(String,Type)
    Opdecl                   -> OpDecl(Id,Type)
    Sort                     -> Sort(Id,ListStarOfSort0)
    Sort                     -> SortNoArgs(UCID)
    Sort                     -> SortVar(LCID)
    Sdecl                    -> Constructors(ListStarOfOpdecl0)
    Sdecl                    -> Sorts(ListStarOfSort1)
    PreTerm                  -> As(Var,PreTerm)
    Term                     -> As(Var,Term)
    Term                     -> Anno(PreTerm,PreTerm)
    PreTerm                  -> Explode(Term,Term)
    PreTerm                  -> OpQ(String,ListStarOfTerm0)
    PreTerm                  -> Op(Id,ListStarOfTerm0)
    PreTerm                  -> Str(String)
    PreTerm                  -> Real(Real)
    PreTerm                  -> Int(Int)
    Term                     -> Wld
    PreTerm                  -> Wld
    Wld                      -> Wld()
    Term                     -> Var
    PreTerm                  -> Var
    ID                       -> Id
    Var                      -> Var(Id)
    String                   -> <string>
    Real                     -> <string>
    Int                      -> <string>
    UCID                     -> <string>
    LCID                     -> <string>
    LId                      -> <string>
    Id                       -> <string>
    ModName                  -> <string>
    Strategy                 -> Cong(Id,ListStarOfStrategy0)
    Id                       -> Mod(String,String)
