
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)
    ListStarOfDynRuleDef0     -> ListPlusOfDynRuleDef0
    ListStarOfDynRuleDef0     -> <nil>()
    ListStarOfDynRuleDef0     -> <conc>(ListStarOfDynRuleDef0,ListStarOfDynRuleDef0)
    ListPlusOfDynRuleDef0     -> <conc>(ListStarOfDynRuleDef0,ListPlusOfDynRuleDef0)
    ListPlusOfDynRuleDef0     -> <conc>(ListPlusOfDynRuleDef0,ListStarOfDynRuleDef0)
    ListPlusOfDynRuleDef0     -> <conc>(ListPlusOfDynRuleDef0,ListPlusOfDynRuleDef0)
    ListPlusOfDynRuleDef0     -> <cons>(DynRuleDef,ListStarOfDynRuleDef0)
    ListStarOfDynRuleScopeId0 -> ListPlusOfDynRuleScopeId0
    ListStarOfDynRuleScopeId0 -> <nil>()
    ListStarOfDynRuleScopeId0 -> <conc>(ListStarOfDynRuleScopeId0,ListStarOfDynRuleScopeId0)
    ListPlusOfDynRuleScopeId0 -> <conc>(ListStarOfDynRuleScopeId0,ListPlusOfDynRuleScopeId0)
    ListPlusOfDynRuleScopeId0 -> <conc>(ListPlusOfDynRuleScopeId0,ListStarOfDynRuleScopeId0)
    ListPlusOfDynRuleScopeId0 -> <conc>(ListPlusOfDynRuleScopeId0,ListPlusOfDynRuleScopeId0)
    ListPlusOfDynRuleScopeId0 -> <cons>(DynRuleScopeId,ListStarOfDynRuleScopeId0)
    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)
    Strategy                  -> DynRuleIntersectUnion(Strategy,RuleNames,RuleNames,Strategy)
    Strategy                  -> DynRuleUnion(Strategy,RuleNames,Strategy)
    Strategy                  -> DynRuleIntersect(Strategy,RuleNames,Strategy)
    Strategy                  -> DynRuleIntersectUnionFix(RuleNames,RuleNames,Strategy)
    Strategy                  -> DynRuleIntersectUnionFix(RuleNames,RuleNames,Strategy)
    Strategy                  -> DynRuleUnionFix(RuleNames,Strategy)
    Strategy                  -> DynRuleUnionFix(RuleNames,Strategy)
    Strategy                  -> DynRuleIntersectFix(RuleNames,Strategy)
    RuleNames                 -> RuleNames(Term)
    RuleNames                 -> ListStarOfId0
    RuleDec                   -> RDecT(Id,ListStarOfTypedid0,ListStarOfTypedid0)
    RuleDec                   -> RDec(Id,ListStarOfTypedid0)
    RuleDec                   -> RDecNoArgs(Id)
    DynRuleScopeId            -> DynRuleScopeId(Id)
    DynRuleScopeId            -> LabeledDynRuleScopeId(Id,Term)
    DynRuleId                 -> DynRuleId(RuleDec)
    DynRuleId                 -> AddLabelDynRuleId(RuleDec,Term)
    DynRuleId                 -> LabeledDynRuleId(RuleDec,Term)
    DynRuleDef                -> SetDynRuleDepends(DynRuleId,Rule,Term)
    DynRuleDef                -> DynRuleAssignAdd(DynRuleId,Term)
    DynRuleDef                -> DynRuleAssign(DynRuleId,Term)
    DynRuleDef                -> SetDynRuleMatch(DynRuleId,Term)
    DynRuleDef                -> AddDynRule(DynRuleId,Rule)
    DynRuleDef                -> SetDynRule(DynRuleId,Rule)
    DynRuleDef                -> UndefineDynRule(DynRuleId,Term)
    DynRuleDef                -> AddScopeLabel(Id,Term)
    Strategy                  -> GenDynRules(ListStarOfDynRuleDef0)
    ScopeLabels               -> ScopeLabels(Term)
    ScopeLabels               -> ListStarOfDynRuleScopeId0
    Strategy                  -> DynRuleScope(ScopeLabels,Strategy)
    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                      -> NoAnnoList(PreTerm)
    Term                      -> AnnoList(PreTerm,ListStarOfTerm0)
    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)
