knot.sa


Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
 

class MAIN

class MAIN is help_message(argv:ARRAY{STR}) is #OUT+"Usage: "+argv[0]+"\n"; #OUT+"Usage: "+argv[0]+" -s options < knot_data\n"; #OUT+"options with -s :\n"; #OUT+" -p [type] P polynomial(type=vz,lm,xyz. type=vz by default)\n"; #OUT+" -f F polynomial\n"; #OUT+" -q Q polynomial\n"; #OUT+" -v [n] Jones polynomial or\n"; #OUT+" n-parallelized Jones polynomial\n"; #OUT+" -c Conway polynomial\n"; #OUT+" -a Alexander polynomial\n"; #OUT+" -ai Alexander matrix/ideal\n"; #OUT+" -am multi variable Alexander matrix\n"; #OUT+" -cov [n] n-fold covering spaces(n=2 by default)\n"; #OUT+" -grp knot group\n"; #OUT+" -kv Goeritz matrix and knot value\n"; #OUT+" -alt alternate\n"; #OUT+" -braid Braid\n"; #OUT+" -ndata n-data\n"; #OUT+" -mirror [axis] mirror(axis=x,y,z. x by default)\n"; #OUT+" -mag [m] m-magnify(m=2.0 by default)\n"; end; inits is --- polynomial -- POLYS_INTI::init; POLYM_INTI::init; -- knot inout -- VERTEXC::setShareds; KNOTX::init; K::Knot:=#KNOT; K::Knot.NoCompo0; -- K::Knot:=KNOT_TEST::trifoil; -- for test end; XLoop(argv:ARRAY{STR}) is -- call X main loop KNOTX::TrackEventK(-1,0,0,0); KNOTXW::knotXProc(argv.size, argv.array_ptr); end; streamIO(argv:ARRAY{STR}) is -- 0: prog. name, 1: -s, 2: function, 3..: optional -- use as: knot -s -f < knot_data > result in_s::=FILE::stdin; out_s::=FILE::stdout; tcode:TCODE; reply:INT:=0; replyb:BOOL:=true; if KNOTFIO::ReadKnotNS(out K::Knot, in_s).not then return; end; if K::Knot.is_Closed then K::Knot.CrossSet(0,K::Knot.length); else #OUT+"Knot data is not closed.\n"; return; end; argPos:INT:=2; loop while!(argPos<argv.size); out_s+"\n"; func:STR:=argv[argPos]; argPos:=argPos+1; if K::Knot.has_band then case func when "-p","-f","-c","-q","-v","-a","-kv","-braid","-ndata" then #OUT+"Not support on 2-knot."; return; else K::Knot.make_coherent; end; end; if K::Knot.SetTCode(out tcode) then -- tcode.get_Relator(tcode); else return; end; case func when "-p" then -- HOMFLY P PDefNum:INT; if argPos<argv.size then case argv[argPos] when "vz" then PDefNum:=1; argPos:=argPos+1; when "lm" then PDefNum:=2; argPos:=argPos+1; when "xyz" then PDefNum:=3; argPos:=argPos+1; else PDefNum:=1; end else PDefNum:=1; end; case PDefNum when 1 then PPOLY::Ppoly(tcode,PPOLY::Def_vz); when 2 then PPOLY::Ppoly(tcode,PPOLY::Def_lm); when 3 then PPOLY::Ppoly(tcode,PPOLY::Def_xyz); end; when "-f" then -- Kauffman F FPOLY::Fpoly(tcode); when "-c" then -- Conway C CPOLY::Cpoly(tcode); when "-q" then -- Q QPOLY::Qpoly(tcode); when "-v" then -- Jones V n:INT:=1; if (argPos<argv.size)and argv[argPos][0].is_digit then n:=#INT(argv[argPos]); argPos:=argPos+1; end; if n>=2 then VPOLY::VPara(tcode,n); else VPOLY::Vpoly(tcode); end; when "-cov" then -- covering n:INT:=2; -- covering fold >=2 if (argPos<argv.size) and argv[argPos][0].is_digit then n:=INT::create(argv[argPos]); argPos:=argPos+1; end; if n<2 then n:=2; end; form::=2; -- 1/2 branchind::=1; covlk::=1; --0/1 h1b::=1; h1u::=1; fndgr::=1; --0/1 covDistY::=1; covDistBr::=1; covDistLk::=1; --0/1 covDistH1B::=1; covDistH1U::=1; --0/1 REP::RepSearch(tcode,n,form,branchind,covlk,h1b,h1u,fndgr, covDistY,covDistBr,covDistLk, covDistH1B,covDistH1U); when "-a" then -- alexander poly. APOLY::ApolyC(tcode); when "-ai" then -- alexander matrix/ideal ALEXMAT::AlexMat(tcode,false,true); when "-am" then -- multi variable alexander matrix ALEXMATM::AlexMat(tcode); when "-grp" then -- knot group KNOT_GROUP::printGroup(tcode); -- Group; when "-kv" then -- Goerits matrix and knot value GOERITZ_MAT::KnotValue(tcode); when "-alt" then -- alternate ALTERNATE::Alternate(inout K::Knot); replyb:=KNOTFIO::WriteKnotS(K::Knot,out_s,true,true,""); when "-braid" then -- braid replyb:=KNOTFIO::WriteBraidS(K::Knot,out_s,true,true,""); when "-ndata" then -- n-data replyb:=KNOTFIO::WriteNDataS(K::Knot,out_s,true,true,""); when "-mirror" then -- mirror-x axis:STR:="x"; -- x,y,z if argPos<argv.size then case argv[argPos] when "x" then axis:="x"; argPos:=argPos+1; when "y" then axis:="y"; argPos:=argPos+1; when "z" then axis:="z"; argPos:=argPos+1; else axis:="x"; -- x,y,z end end; case axis when "x" then K::Knot.mirrorX; when "y" then K::Knot.mirrorY; when "z" then K::Knot.mirrorZ; end; replyb:=KNOTFIO::WriteKnotS(K::Knot,out_s,true,true,""); when "-mag" then -- magnify mag:FLT:=2.0; if (argPos<argv.size) and argv[argPos][0].is_digit then mag:=#FLT(argv[argPos]); argPos:=argPos+1; end; if mag<0.0 then mag:=2.0; end; K::Knot.ChangeSize(mag); replyb:=KNOTFIO::WriteKnotS(K::Knot,out_s,true,true,""); else #OUT+" Unknown option "+func+"\n"; end; end; end; main(argv:ARRAY{STR}) is inits; if (argv.size>=2) then if (argv[1]="-s") then streamIO(argv); -- stream in/out else help_message(argv); end; else XLoop(argv); -- X main loop end; end; end;