Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346############################################################################# ## #W new.g OpenMath Package Marco Costantini ## #Y Copyright (C) 1999, 2000, 2001, 2006 #Y School Math and Comp. Sci., University of St. Andrews, Scotland #Y Copyright (C) 2004, 2005, 2006 Marco Costantini ## ## This file contains update to the record OMsymRecord, according to the ## current OpenMath CDs (for converting from OpenMath to GAP), ## ###################################################################### ## ## Semantic mappings for symbols from private CD algnums.ocd ## BindGlobal("OMgapNthRootOfUnity", x -> OMgapId( [ OMgap2ARGS(x), E(x[1])^x[2] ] )[2] ); ###################################################################### ## ## Semantic mappings for symbols from private CD cas.ocd ## ## quit BindGlobal("OMgapQuitFunc", function() return fail; end); BindGlobal("OMgapQuit", x->OMgapQuitFunc()); ## assign BindGlobal("OMgapAssignFunc", function(varname, obj) if IsBoundGlobal(varname) then UnbindGlobal(varname); fi; BindGlobal(varname, obj); MakeReadWriteGlobal(varname); return ""; end); BindGlobal("OMgapAssign", x->OMgapId([OMgap2ARGS(x), OMgapAssignFunc(x[1],x[2])])[2]); ## retrieve BindGlobal("OMgapRetrieveFunc", function(varname) if ValueGlobal(varname) = fail then return false; else return ValueGlobal(varname); fi; end); BindGlobal("OMgapRetrieve", x->OMgapId([OMgap1ARGS(x), OMgapRetrieveFunc(x[1])])[2]); ## native_statement and error OM_GAP_OUTPUT_STR := ""; OM_GAP_ERROR_STR := ""; BindGlobal("OMgapNativeStatementFunc", function(statement) local i, result; OM_GAP_ERROR_STR := ""; # if statement has READ, Read, WRITE or Write then it's invalid if (PositionSublist(statement, "READ") <> fail) or (PositionSublist(statement, "Read") <> fail) or (PositionSublist(statement, "WRITE") <> fail) or (PositionSublist(statement, "Write") <> fail) then OM_GAP_ERROR_STR := "Invalid Statement"; return false; fi; i := InputTextString(statement); # want to catch standard out. result := READ_COMMAND_REAL(i,false); CloseStream(i); if Length(result) = 2 then OM_GAP_OUTPUT_STR := StringView(result[2]); elif result[1] = true then OM_GAP_OUTPUT_STR := ""; else OM_GAP_OUTPUT_STR := fail; OM_GAP_ERROR_STR := "Unknown Error"; return false; fi; return true; end); BindGlobal("OMgapNativeStatement", x->OMgapId([OMgap1ARGS(x), OMgapNativeStatementFunc(x[1])])[2]); BindGlobal("OMgapNativeErrorFunc", function() return OM_GAP_ERROR_STR; # near as possible to the empty object end); BindGlobal("OMgapNativeError", x->OMgapId(OMgapNativeErrorFunc())); BindGlobal("OMgapNativeOutputFunc", function() return OM_GAP_OUTPUT_STR; # near as possible to the empty object end); BindGlobal("OMgapNativeOutput", x->OMgapId(OMgapNativeOutputFunc())); ###################################################################### ## ## Semantic mappings for private symbols from group1.cd ## BindGlobal("OMgapCharacterTableOfGroup", x->OMgapId([OMgap1ARGS(x), CharacterTable(x[1])])[2]); ####################################################################### ## ## Conversion from OpenMath to GAP for private CDs and symbols ## OMsymRecord_private := rec( algnums := rec( # see this CD in openmath/cds directory NthRootOfUnity := OMgapNthRootOfUnity, star := fail ), cas := rec( # see this CD in openmath/cds directory assign := OMgapAssign, native_error := OMgapNativeError, native_output := OMgapNativeOutput, native_statement := OMgapNativeStatement, referent := fail, retrieve := OMgapRetrieve, ("quit") := OMgapQuit, ), fpgroup1 := rec( # experimental symbols, see openmath/cds/group1 fpgroup := function( x ) local f, fam, rels, i; f := x[1]; fam := FamilyObj( One(f) ); rels := []; for i in [2..Length(x)] do Add( rels, ObjByExtRep( fam, x[i] ) ); od; return f/rels; end, free_groupn := x -> FreeGroup( x[1] ) ), group1 := rec( # experimental symbols, see openmath/cds/group1 group_by_generators := Group, # we take just list of generators unlike in # group1.group from the official group1 CDs character_table_of_group := OMgapCharacterTableOfGroup, character_table := OMgapCharacterTableOfGroup ), monoid1 := rec( monoid_by_generators := Monoid # we take just list of generators unlike in # semigroup1.semigroup from the official group1 CDs ), pcgroup1 := rec( pcgroup_by_pcgscode := x -> PcGroupCode( x[1], x[2] ) ), record1 := rec( record := function( x ) local i, r; r := rec(); for i in [ 2, 4 .. Length(x) ] do r.(x[i-1]) := x[i]; od; return r; end, ), semigroup1 := rec( semigroup_by_generators := Semigroup # we take just list of generators unlike in # semigroup1.semigroup from the official group1 CDs ), transform1 := rec( # TODO: document it transformation := Transformation ), ); ############################################################################# #E