############################################################################
#
#	File:     linddefs.icn
#
#	Subject:  Procedure to produce table of L-systems
#
#	Author:   Ralph E. Griswold
#
#	Date:     November 22, 1997
#
############################################################################
#
#   This file is in the public domain.
#
############################################################################
#
#  This procedure produces a table of L-systems.
#
############################################################################
#
#  Links:  lindrec
#
############################################################################

link lindrec

procedure linddefs()
   local linden

   linden := table()

   linden["fibbush"] := lsys_0l("", table(), 0, 90)
   linden["fibbush"].rewrite["A"] := "[B/////'B///////'B]"
   linden["fibbush"].rewrite["B"] := "[&IL!A]"
   linden["fibbush"].rewrite["I"] := "FL"
   linden["fibbush"].rewrite["F"] := "F/////I"
   linden["fibbush"].rewrite["L"] := "['''^^{-F+F+F-|-F+F+F}]"
   linden["fibbush"].gener := 3
   linden["fibbush"].length := 3
   linden["fibbush"].axiom := "A"
   linden["fibbush"].angle := 22.5
   linden["ebush"] := lsys_0l("", table(), 0, 90)
   linden["ebush"].rewrite["P"] := "I+[P+O]--//[--L]I[++L]-[PO]++PO"
   linden["ebush"].rewrite["I"] := "FS[//&&L][//^^L]FS"
   linden["ebush"].rewrite["S"] := "SFS"
   linden["ebush"].rewrite["L"] := "['{+f-ff-f+|+f-ff-f}]"
   linden["ebush"].rewrite["O"] := "[&&&D`/W////W////W////W////W]"
   linden["ebush"].rewrite["D"] := "FF"
   linden["ebush"].rewrite["W"] := "[`^F][{&&&&-f+f|-f+f}]"
   linden["ebush"].axiom := "P"
   linden["ebush"].angle := 18.0
   linden["ebush"].gener := 3
   linden["ebush"].length := 3
   linden["bush"] := lsys_0l("", table(), 0, 90)
   linden["bush"].rewrite["F"] := "FF-[-F+F+F]+[+F-F-F]"
   linden["bush"].axiom := "++++F"
   linden["bush"].angle := 22.5
   linden["cesaro"] := lsys_0l("", table(), 0, 90)
   linden["cesaro"].rewrite["X"] := "----F!X!++++++++F!X!----"
   linden["cesaro"].rewrite["F"] := ""
   linden["cesaro"].gener := 10
   linden["cesaro"].length := 3
   linden["cesaro"].axiom := "FX"
   linden["cesaro"].angle := 10.58823529
   linden["curve1"] := lsys_0l("", table(), 0, 90)
   linden["curve1"].rewrite["F"] := "FF-F-F-F-F-F+F"
   linden["curve1"].axiom := "F-F-F-F-"
   linden["curve1"].angle := 90.0
   linden["curve2"] := lsys_0l("", table(), 0, 90)
   linden["curve2"].rewrite["F"] := "FF-F+F-F-FF"
   linden["curve2"].axiom := "F-F-F-F-"
   linden["curve2"].angle := 90.0
   linden["curve3"] := lsys_0l("", table(), 0, 90)
   linden["curve3"].rewrite["F"] := "F-FF--F-F"
   linden["curve3"].axiom := "F-F-F-F-"
   linden["curve3"].angle := 90.0
   linden["curve4"] := lsys_0l("", table(), 0, 90)
   linden["curve4"].rewrite["X"] := "YF+XF+Y"
   linden["curve4"].rewrite["Y"] := "XF-YF-X"
   linden["curve4"].axiom := "YF"
   linden["curve4"].angle := 60.0
   linden["curve4"].gener := 5
   linden["dragon"] := lsys_0l("", table(), 0, 90)
   linden["dragon"].rewrite["X"] := "-FX++FY-"
   linden["dragon"].rewrite["Y"] := "+FX--FY+"
   linden["dragon"].rewrite["F"] := ""
   linden["dragon"].axiom := "FX"
   linden["dragon"].angle := 45.0
   linden["dragon"].gener := 10
   linden["dragon1"] := lsys_0l("", table(), 0, 90)
   linden["dragon1"].rewrite["r"] := "-Fl-r"
   linden["dragon1"].rewrite["l"] := "l+rF+"
   linden["dragon1"].axiom := "Fl"
   linden["dragon1"].gener := 14
   linden["dragonc"] := lsys_0l("", table(), 0, 90)
   linden["dragonc"].rewrite["X"] := "X-YF-"
   linden["dragonc"].rewrite["Y"] := "+FX+Y"
   linden["dragonc"].axiom := "X"
   linden["dragonc"].angle := 90.0
   linden["dragonc"].gener := 10
   linden["fass1"] := lsys_0l("", table(), 0, 90)
   linden["fass1"].rewrite["R"] := "-LFLF+RFRFR+F+RF-LFL-FR"
   linden["fass1"].rewrite["L"] := "LF+RFR+FL-F-LFLFL-FRFR+"
   linden["fass1"].axiom := "-L"
   linden["fass1"].angle := 90.0
   linden["fass2"] := lsys_0l("", table(), 0, 90)
   linden["fass2"].rewrite["R"] := "-LFLFLF+RFR+FL-F-LF+RFR+FLF+RFRF-LFL-FRFR"
   linden["fass2"].rewrite["L"] := "LFLF+RFR+FLFL-FRF-LFL-FR+F+RF-LFL-FRFRFR+"
   linden["fass2"].axiom := "-L"
   linden["fass2"].angle := 90.0
   linden["flake3"] := lsys_0l("", table(), 0, 90)
   linden["flake3"].rewrite["X"] := "++FXFY--FX--FY"
   linden["flake3"].rewrite["Y"] := "FYFX+++FYFX++FX++FYFX|+FX--FY--FXFY++"
   linden["flake3"].rewrite["F"] := ""
   linden["flake3"].axiom := "FX"
   linden["flake3"].angle := 30.0
   linden["flake3"].gener := 10
   linden["hilbert"] := lsys_0l("", table(), 0, 90)
   linden["hilbert"].rewrite["X"] := "-YF+XFX+FY-"
   linden["hilbert"].rewrite["Y"] := "+XF-YFY-FX+"
   linden["hilbert"].axiom := "X"
   linden["hilbert"].angle := 90.0
   linden["hilbert"].gener := 10
   linden["island1"] := lsys_0l("", table(), 0, 90)
   linden["island1"].rewrite["F"] := "FFFF-F+F+F-F[-FF+F+FF+F]FF"
   linden["island1"].axiom := "F+F+F+F"
   linden["island1"].angle := 90.0
   linden["island2"] := lsys_0l("", table(), 0, 90)
   linden["island2"].rewrite["F"] := "F+F-FF-F-FF++FF-F+FF+F+FF--FFF"
   linden["island2"].axiom := "F+F+F+F"
   linden["island2"].angle := 90.0
   linden["island2"].gener := 4
   linden["island2"].length := 2
   linden["koch1"] := lsys_0l("", table(), 0, 90)
   linden["koch1"].rewrite["F"] := "F+F--F+F"
   linden["koch1"].axiom := "F--F--F"
   linden["koch1"].angle := 60.0
   linden["koch1"].gener := 4
   linden["koch1"].length := 4
   linden["koch2"] := lsys_0l("", table(), 0, 90)
   linden["koch2"].rewrite["F"] := "-F+++F---F+"
   linden["koch2"].axiom := "F---F---F---F"
   linden["koch2"].angle := 30.0
   linden["koch2"].gener := 6
   linden["koch2"].length := 4
   linden["koch3"] := lsys_0l("", table(), 0, 90)
   linden["koch3"].rewrite["F"] := "F-F+F+FF-F-F+F"
   linden["koch3"].axiom := "F-F-F-F"
   linden["koch3"].angle := 90.0
   linden["koch3"].gener := 6
   linden["koch3"].length := 4
   linden["koch4"] := lsys_0l("", table(), 0, 90)
   linden["koch4"].rewrite["F"] := "+F--F++F-"
   linden["koch4"].axiom := "F++++F++++F"
   linden["koch4"].angle := 30.0
   linden["koch4"].gener := 5
   linden["koch4"].length := 3
   linden["koch5"] := lsys_0l("", table(), 0, 90)
   linden["koch5"].rewrite["F"] := "F+F-F-FFF+F+F-F"
   linden["koch5"].axiom := "F+F+F+F"
   linden["koch5"].angle := 90.0
   linden["koch6"] := lsys_0l("", table(), 0, 90)
   linden["koch6"].rewrite["F"] := "F-FF+FF+F+F-F-FF+F+F-F-FF-FF+F"
   linden["koch6"].axiom := "F+F+F+F"
   linden["koch6"].angle := 90.0
   linden["koch7"] := lsys_0l("", table(), 0, 90)
   linden["koch7"].rewrite["F"] := "F+F-F+F+F"
   linden["koch7"].axiom := "F+F+F+F"
   linden["koch7"].gener := 4
   linden["koch8"] := lsys_0l("", table(), 0, 90)
   linden["koch8"].rewrite["F"] := "F+F--F+F"
   linden["koch8"].axiom := "F"
   linden["koch8"].angle := 60.0
   linden["lakeisle"] := lsys_0l("", table(), 0, 90)
   linden["lakeisle"].rewrite["F"] := "F-f+FF-F-FF-Ff-FF+f-FF+F+FF+Ff+FFF"
   linden["lakeisle"].rewrite["f"] := "ffffff"
   linden["lakeisle"].axiom := "F-F-F-F"
   linden["lakeisle"].gener := 2
   linden["leaf1"] := lsys_0l("", table(), 0, 90)
   linden["leaf1"].rewrite["H"] := "J"
   linden["leaf1"].rewrite["P"] := "X"
   linden["leaf1"].rewrite["X"] := "F[+AAAA]FY"
   linden["leaf1"].rewrite["E"] := "H"
   linden["leaf1"].rewrite["B"] := "E"
   linden["leaf1"].rewrite["J"] := "Y"
   linden["leaf1"].rewrite["O"] := "P"
   linden["leaf1"].rewrite["A"] := "N"
   linden["leaf1"].rewrite["Y"] := "F[-BBBB]FX"
   linden["leaf1"].rewrite["N"] := "O"
   linden["leaf1"].axiom := "X"
   linden["leaf1"].angle := 45.0
   linden["leaf1"].gener := 10
   linden["leaf2"] := lsys_0l("", table(), 0, 90)
   linden["leaf2"].rewrite["X"] := "A"
   linden["leaf2"].rewrite["B"] := "F[-Y]FA"
   linden["leaf2"].rewrite["A"] := "F[+X]BF"
   linden["leaf2"].rewrite["Y"] := "B"
   linden["leaf2"].axiom := "A"
   linden["leaf2"].angle := 45.0
   linden["leaf2"].gener := 14
   linden["peano1"] := lsys_0l("", table(), 0, 90)
   linden["peano1"].rewrite["F"] := "F-F+F+F+F-F-F-F+F"
   linden["peano1"].axiom := "F-F-F-F"
   linden["peano1"].angle := 90.0
   linden["peano2"] := lsys_0l("", table(), 0, 90)
   linden["peano2"].rewrite["X"] := "XY-F-FXY++F++FXY"
   linden["peano2"].rewrite["Y"] := "-F-FXY"
   linden["peano2"].axiom := "FXY++F++FXY++F"
   linden["peano2"].angle := 45.0
   linden["peano2"].gener := 4
   linden["peano2"].length := 7
   linden["peano3"] := lsys_0l("", table(), 0, 90)
   linden["peano3"].rewrite["X"] := "XFYFX+F+YFXFY-F-XFYFX"
   linden["peano3"].rewrite["Y"] := "YFXFY-F-XFYFX+F+YFXFY"
   linden["peano3"].axiom := "X"
   linden["peano3"].angle := 90.0
   linden["penrose1"] := lsys_0l("", table(), 0, 90)
   linden["penrose1"].rewrite["X"] := "+YF--ZF[---WF--XF]+"
   linden["penrose1"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF"
   linden["penrose1"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++"
   linden["penrose1"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-"
   linden["penrose1"].rewrite["F"] := ""
   linden["penrose1"].axiom := "+WF--XF---YF--ZF"
   linden["penrose1"].angle := 36.0
   linden["penrose2"] := lsys_0l("", table(), 0, 90)
   linden["penrose2"].rewrite["X"] := "+YF--ZF[---WF--XF]+"
   linden["penrose2"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF"
   linden["penrose2"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++"
   linden["penrose2"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-"
   linden["penrose2"].rewrite["F"] := ""
   linden["penrose2"].axiom := "++ZF----XF-YF----WF"
   linden["penrose2"].angle := 36.0
   linden["penrose2"].gener := 5
   linden["penrose2"].length := 10
   linden["penrose3"] := lsys_0l("", table(), 0, 90)
   linden["penrose3"].rewrite["X"] := "+YF--ZF[---WF--XF]+"
   linden["penrose3"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF"
   linden["penrose3"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++"
   linden["penrose3"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-"
   linden["penrose3"].rewrite["F"] := ""
   linden["penrose3"].axiom := "[X]++[X]++[X]++[X]++[X]"
   linden["penrose3"].angle := 36.0
   linden["penrose3"].gener := 5
   linden["penrose3"].length := 10
   linden["penrose4"] := lsys_0l("", table(), 0, 90)
   linden["penrose4"].rewrite["X"] := "+YF--ZF[---WF--XF]+"
   linden["penrose4"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF"
   linden["penrose4"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++"
   linden["penrose4"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-"
   linden["penrose4"].rewrite["F"] := ""
   linden["penrose4"].axiom := "[Y]++[Y]++[Y]++[Y]++[Y]"
   linden["penrose4"].angle := 36.0
   linden["penrose4"].gener := 5
   linden["penrose4"].length := 10
   linden["penrosed"] := lsys_0l("", table(), 0, 90)
   linden["penrosed"].rewrite["X"] := "+YF--ZF[---WF--XF]+"
   linden["penrosed"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF"
   linden["penrosed"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++"
   linden["penrosed"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-"
   linden["penrosed"].rewrite["F"] := ""
   linden["penrosed"].axiom := "[X][Y]++[X][Y]++[X][Y]++[X][Y]++[X][Y]"
   linden["penrosed"].angle := 36.0
   linden["penrosed"].length := 40
   linden["plant01"] := lsys_0l("", table(), 0, 90)
   linden["plant01"].rewrite["F"] := "F[+F]F[-F]F"
   linden["plant01"].axiom := "F"
   linden["plant01"].angle := 25.71428571
   linden["plant01"].gener := 10
   linden["plant02"] := lsys_0l("", table(), 0, 90)
   linden["plant02"].rewrite["F"] := "F[+F]F[-F][F]"
   linden["plant02"].axiom := "F"
   linden["plant02"].angle := 20.0
   linden["plant03"] := lsys_0l("", table(), 0, 90)
   linden["plant03"].rewrite["F"] := "FF-[-F+F+F]+[+F-F-F]"
   linden["plant03"].axiom := "F"
   linden["plant03"].angle := 22.5
   linden["plant03"].gener := 4
   linden["plant04"] := lsys_0l("", table(), 0, 90)
   linden["plant04"].rewrite["X"] := "F[+X]F[-X]+X"
   linden["plant04"].rewrite["F"] := "FF"
   linden["plant04"].axiom := "X"
   linden["plant04"].angle := 20.0
   linden["plant04"].gener := 5
   linden["plant05"] := lsys_0l("", table(), 0, 90)
   linden["plant05"].rewrite["X"] := "F[+X][-X]FX"
   linden["plant05"].rewrite["F"] := "FF"
   linden["plant05"].axiom := "X"
   linden["plant05"].angle := 25.71428571
   linden["plant05"].gener := 5
   linden["plant06"] := lsys_0l("", table(), 0, 90)
   linden["plant06"].rewrite["X"] := "F-[[X]+X]+F[+FX]-X"
   linden["plant06"].rewrite["F"] := "FF"
   linden["plant06"].axiom := "X"
   linden["plant06"].angle := 22.5
   linden["plant06"].gener := 5
   linden["plant07"] := lsys_0l("", table(), 0, 90)
   linden["plant07"].rewrite["X"] := "X[-FFF][+FFF]FX"
   linden["plant07"].rewrite["Z"] := "ZFX[+Z][-Z]"
   linden["plant07"].axiom := "Z"
   linden["plant07"].angle := 25.71428571
   linden["plant07"].gener := 5
   linden["plant08"] := lsys_0l("", table(), 0, 90)
   linden["plant08"].rewrite["S"] := "[+++Z][---Z]TS"
   linden["plant08"].rewrite["H"] := "-Z[+H]L"
   linden["plant08"].rewrite["Z"] := "+H[-Z]L"
   linden["plant08"].rewrite["L"] := "[-FFF][+FFF]F"
   linden["plant08"].rewrite["T"] := "TL"
   linden["plant08"].axiom := "SLFFF"
   linden["plant08"].angle := 18.0
   linden["plant08"].gener := 6
   linden["plant08"].length := 8
   linden["plant09"] := lsys_0l("", table(), 0, 90)
   linden["plant09"].rewrite["X"] := "X[-FFF][+FFF]FX"
   linden["plant09"].rewrite["Y"] := "YFX[+Y][-Y]"
   linden["plant09"].axiom := "Y"
   linden["plant09"].angle := 25.71428571
   linden["plant09"].gener := 5
   linden["plant10"] := lsys_0l("", table(), 0, 90)
   linden["plant10"].rewrite["F"] := "F[+FF][-FF]F[+FF][-FF]F"
   linden["plant10"].axiom := "F"
   linden["plant10"].angle := 36.0
   linden["plant10"].gener := 3
   linden["plant11"] := lsys_0l("", table(), 0, 90)
   linden["plant11"].rewrite["F"] := "F[+F[+F][-F]F][-F[+F][-F]F]F[+F][-F]F"
   linden["plant11"].axiom := "F"
   linden["plant11"].angle := 30.0
   linden["plant11"].gener := 3
   linden["plant11"].length := 10
   linden["quadgos"] := lsys_0l("", table(), 0, 90)
   linden["quadgos"].rewrite["R"] := "+FLFL-FR-FR+FL+FLFR+FL-FRFR-FL-FR+FLFRFR-FL-FRFL+FL+FR-FR-FL+FL+FRFR"
   linden["quadgos"].rewrite["L"] := "FLFL-FR-FR+FL+FL-FR-FRFL+FR+FLFLFR-FL+FR+FLFL+FR-FLFR-FR-FL+FL+FRFR-"
   linden["quadgos"].rewrite["F"] := ""
   linden["quadgos"].axiom := "-FR"
   linden["quadgos"].angle := 90.0
   linden["quadkoch"] := lsys_0l("", table(), 0, 90)
   linden["quadkoch"].rewrite["F"] := "F+FF-FF-F-F+F+FF-F-F+F+FF+FF-F"
   linden["quadkoch"].axiom := "FX++FX++FX++FX++FX"
   linden["quadkoch"].angle := 90.0
   linden["quartet"] := lsys_0l("", table(), 0, 90)
   linden["quartet"].rewrite["H"] := "-"
   linden["quartet"].rewrite["B"] := "FB+FA-FB-JFBFA"
   linden["quartet"].rewrite["J"] := "+"
   linden["quartet"].rewrite["A"] := "FBFA+HFA+FB-FA"
   linden["quartet"].rewrite["F"] := ""
   linden["quartet"].axiom := "FB"
   linden["quartet"].angle := 90.0
   linden["quartet"].gener := 8
   linden["sier1"] := lsys_0l("", table(), 0, 90)
   linden["sier1"].rewrite["X"] := "+FXF-FXF-FXF+"
   linden["sier1"].rewrite["F"] := "FXF"
   linden["sier1"].axiom := "F"
   linden["sier1"].angle := 120.0
   linden["sier1"].gener := 5
   linden["sier2"] := lsys_0l("", table(), 0, 90)
   linden["sier2"].rewrite["X"] := "--FXF++FXF++FXF--"
   linden["sier2"].rewrite["F"] := "FF"
   linden["sier2"].axiom := "FXF--FF--FF"
   linden["sier2"].angle := 60.0
   linden["sier2"].gener := 5
   linden["sier3"] := lsys_0l("", table(), 0, 90)
   linden["sier3"].rewrite["F"] := "F[-F]F"
   linden["sier3"].axiom := "F-F-F"
   linden["sier3"].angle := 120.0
   linden["sier3"].gener := 5
   linden["siersqar"] := lsys_0l("", table(), 0, 90)
   linden["siersqar"].rewrite["F"] := "FF+F+F+F+FF"
   linden["siersqar"].axiom := "F+F+F+F"
   linden["siersqar"].angle := 90.0
   linden["siersqar"].gener := 4
   linden["snoflake"] := lsys_0l("", table(), 0, 90)
   linden["snoflake"].rewrite["F"] := "F-F+F+F-F"
   linden["snoflake"].axiom := "+F"
   linden["snoflake"].gener := 4
   linden["space1"] := lsys_0l("", table(), 0, 90)
   linden["space1"].rewrite["X"] := "YFXFY+F+YFXFY-F-XFYFX"
   linden["space1"].rewrite["Y"] := "YFXFY-F-XFYFX+F+YFXFY"
   linden["space1"].axiom := "X"
   linden["space1"].gener := 3
   linden["sphinx"] := lsys_0l("", table(), 0, 90)
   linden["sphinx"].rewrite["X"] := "+FF-YFF+FF--FFFXF--YFFFYFFF"
   linden["sphinx"].rewrite["G"] := "GG"
   linden["sphinx"].rewrite["Y"] := "-FF+XFF-FF++FFFYF++XFFFXFFF"
   linden["sphinx"].rewrite["F"] := "GG"
   linden["sphinx"].axiom := "X"
   linden["sphinx"].angle := 60.0
   linden["sphinx"].gener := 5
   linden["sqgasket"] := lsys_0l("", table(), 0, 90)
   linden["sqgasket"].rewrite["X"] := "+FXF+FXF+FXF+FXF"
   linden["sqgasket"].rewrite["F"] := "FF"
   linden["sqgasket"].axiom := "X"
   linden["sqgasket"].angle := 90.0
   linden["sqgasket"].gener := 5
   linden["square"] := lsys_0l("", table(), 0, 90)
   linden["square"].rewrite["F"] := "FF+F+F+F+FF"
   linden["square"].axiom := "F+F+F+F"
   linden["square"].angle := 90.0
   linden["tile"] := lsys_0l("", table(), 0, 90)
   linden["tile"].rewrite["X"] := "[F+F+F+F[---X-Y]+++++F++++++++F-F-F-F]"
   linden["tile"].rewrite["Y"] := "[F+F+F+F[---Y]+++++F++++++++F-F-F-F]"
   linden["tile"].axiom := "X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X"
   linden["tile"].angle := 15.0
   linden["tile"].length := 10
   linden["tree"] := lsys_0l("", table(), 0, 90)
   linden["tree"].rewrite["X"] := "[-FX]+FX"
   linden["tree"].axiom := "+++FX"
   linden["tree"].angle := 30.0
   linden["tree"].gener := 8
   linden["tree"].length := 10
   linden["tree1"] := lsys_0l("", table(), 0, 90)
   linden["tree1"].rewrite["X"] := "[-FX]+FX"
   linden["tree1"].axiom := "+++FX"
   linden["tree1"].angle := 30.0
   linden["tree1"].gener := 5
   linden["tree1"].length := 8
   linden["tree2"] := lsys_0l("", table(), 0, 90)
   linden["tree2"].rewrite["X"] := "+FY"
   linden["tree2"].rewrite["Y"] := "-FX"
   linden["tree2"].rewrite["F"] := "FF-[XY]+[XY]"
   linden["tree2"].axiom := "++++F"
   linden["tree2"].angle := 22.5

   return linden

end
