Contents

  Table of Contents
  Preface
I  NCAlgebra
 0.1 ReleaseNotes NCAlgebra
1 A Short Tutorial on NCAlgebra
 1.1 Installing NCAlgebra
  1.1.1 Downloading
  1.1.2 Unpacking
  1.1.3 Installing
 1.2 Running NCAlgebra
 1.3 A Short Tutorial
 1.4 Where to Find More Examples
 1.5 Pretty Output
2 A More Sophisticated Demo
3 Helpful Tricks
 3.1 Expanding
 3.2 Simplifying Expressions
  3.2.1 Simplifying Rules
  3.2.2 Orders
  3.2.3 Automatic generation of rules
 3.3 Edit - For those without Notebooks
 3.4 Conventions
4 NC Commands
 4.1 Manipulating an expression
  4.1.1 ExpandNonCommutativeMultiply[expr]
  4.1.2 NCCollect[expr, aListOfVariables]
  4.1.3 NCStrongCollect[expr, aListOfVariables]
  4.1.4 NCCollectSymmetric[expr]
  4.1.5 NCTermsOfDegree[expr,aListOfVariables,indices]
  4.1.6 NCSolve[expr1==expr2,var]
  4.1.7 Substitute[expr,aListOfRules,(Optional On)]
  4.1.8 SubstituteSymmetric[expr, aListOfRules, (optional On)]
  4.1.9 SubstituteSingleReplace[expr, aListOfRules, (optional On)]
  4.1.10 SubstituteAll[expr, aListOfRules, (optional On)]
  4.1.11 Transform[expr,aListOfRules]
  4.1.12 GrabIndeterminants[ aListOfPolynomialsOrRules]
  4.1.13 GrabVariables[ aListOfPolynomialsOrRules ]
  4.1.14 NCBackward[expr]
  4.1.15 NCForward[expr]
  4.1.16 NCMonomial[expr]
  4.1.17 NCUnMonomial[expr]
 4.2 Simplification
  4.2.1 NCSimplifyRational[ expr ], NCSimplify1Rational[ expr ], and NCSimplify2Rational[ expr ]
  4.2.2 NCSimplify1Rational[expr]
  4.2.3 NCSimplify2Rational[expr]
 4.3 Vector Differentiation
  4.3.1 DirectionalD[expr, aVariable, h]
  4.3.2 Grad[expr, aVariable]
  4.3.3 CriticalPoint[expr, aVariable]
  4.3.4 NCHessian[afunction, {X1,H1},,{Xk,Hk} ]
 4.4 Block Matrix Manipulation
  4.4.1 MatMult[x, y, ]
  4.4.2 ajMat[u]
  4.4.3 coMat[u]
  4.4.4 tpMat[u]
  4.4.5 NCMToMatMult[expr]
  4.4.6 TimesToNCM[expr]
  4.4.7 Special Operations with Block Matrices
  4.4.8 NCLDUDecomposition[aMatrix, Options]
  4.4.9 NCAllPermutationLDU[aMatrix]
  4.4.10 NCInverse[aSquareMatrix]
  4.4.11 NCPermutationMatrix[aListOfIntegers]
  4.4.12 NCMatrixToPermutation[aMatrix]
  4.4.13 NCCheckPermutation[SizeOfMatrix, aListOfPermutations]
  4.4.14 Diag[aMatrix]
  4.4.15 Cascade[P, K]
  4.4.16 Chain[P]
  4.4.17 Redheffer[P]
  4.4.18 DilationHalmos[x]
  4.4.19 SchurComplementTop[M]
  4.4.20 SchurComplementBtm[M]
 4.5 Complex Analysis
  4.5.1 A tutorial
  4.5.2 ComplexRules
  4.5.3 ComplexCoordinates[expr]
  4.5.4 ComplexD[expr, aVariable]
 4.6 Setting symbols to commute or not commute
  4.6.1 SetNonCommutative[A, B, C, ]
  4.6.2 CommuteEverything[expr]
  4.6.3 SetCommutative[a, b, c, ]
  4.6.4 SetCommutingOperators[b,c]
  4.6.5 LeftQ[expr]
  4.6.6 CommutativeQ[X]
  4.6.7 CommutativeAllQ[expr]
 4.7 Operations on elements in an algebra
  4.7.1 inv[x]
  4.7.2 invL[x]
  4.7.3 invR[x]
  4.7.4 invQ[x]
  4.7.5 ExpandQ[inv]
  4.7.6 ExpandQ[tp]
  4.7.7 OverrideInverse
  4.7.8 aj[expr]
  4.7.9 tp[expr]
  4.7.10 co[expr]
 4.8 Convexity of a NC function
  4.8.1 NCConvexityRegion[afunction,alistOfVars,opts]
  4.8.2 NCMatrixOfQuadratic[ Q, {H1,,Hn} ]
  4.8.3 NCIndependenceCheck[aListofLists,variable]
  4.8.4 NCBorderVectorGather[alist,varlist]
 4.9 NCGuts
  4.9.1 NCStrongProduct1
  4.9.2 NCStrongProduct2
  4.9.3 NCSetNC
 4.10 Setting Properties of an element in an algebra
  4.10.1 SetInv[a, b, c, ]
  4.10.2 SetSelfAdjoint[Symbols]
  4.10.3 SelfAdjointQ[aSymbol]
  4.10.4 SetIsometry[Symbols]
  4.10.5 IsometryQ[aSymbol]
  4.10.6 SetCoIsometry[Symbols]
  4.10.7 CoIsometryQ[aSymbol]
  4.10.8 SetUnitary[Symbols]
  4.10.9 UnitaryQ[aSymbol]
  4.10.10 SetProjection[Symbols]
  4.10.11 ProjectionQ[S]
  4.10.12 SetSignature[Symbols]
  4.10.13 SignatureQ[Symbol]
 4.11 Setting Properties of functions on an algebra
  4.11.1 SetSesquilinear[Functions]
  4.11.2 SesquilinearQ[aFunction]
  4.11.3 SetBilinear[Functions]
  4.11.4 BilinearQ[aFunction]
  4.11.5 SetLinear[Functions]
  4.11.6 LinearQ[aFunction]
  4.11.7 SetConjugateLinear[Functions]
  4.11.8 ConjugateLinearQ[aFunction]
  4.11.9 SetIdempotent[Functions]
  4.11.10 IdempotentQ[aFunction]
  4.11.11 SetCommutingFunctions[ aFunction, anotherFunction]
  4.11.12 SetNonCommutativeMultiplyAntihomomorphism[ Functions]
 4.12 Manipulating an Expression — less useful commands
  4.12.1 NCTermArray[expr,aList,anArray]
  4.12.2 NCReconstructFromTermArray[anArray]
  4.12.3 NCCompose[aVerySpecialList]
  4.12.4 NCDecompose[expr, listofsymbols]
 4.13 Utilities
  4.13.1 SaveRules[expression, ’optional tag ”message”’]
  4.13.2 SaveRulesQ[]
  4.13.3 FunctionOnRules[Rules, Function1, Function2, (optional On)]
 4.14 Deprecated Commands
  4.14.1 RandomMatrix[m,n,min,max,options]
  4.14.2 CEEP
5 Pretty Output and Tex Commands
 5.1 Pretty Output
  5.1.1 NCSetOutput[ optionlist,]
 5.2 TEX Typesetting with NCTEXForm
  5.2.1 NCTeXForm[exp]
 5.3 Simple TEX Commands with NCTEX
  5.3.1 NCTeX[]
 5.4 Deprecated Commands
  5.4.1 SeeTeX[] or SeeTeX[anInteger]
  5.4.2 NoTeX[]
  5.4.3 KillTeX[]
  5.4.4 See[aListOfIntegers]
  5.4.5 Keep[anInteger]
  5.4.6 Kill[anInteger]
  5.4.7 LookAtMatrix[aMatrix]
  5.4.8 LookAtLongExpression[anExpression]
6 Aliases
II   NONCOMMUTATIVE CONTROL SYSTEM PROFESSIONAL
7 State Space Systems Constructions
 7.1 System Interconnections
  7.1.1 SeriesConnect[ System1, System2 ]
  7.1.2 FeedbackConnect[ System1, System2 ]
  7.1.3 ParallelConnect[ System1, System2 ]
 7.2 Continuous vs. Discrete
  7.2.1 ContinuousTimeQ[ System1]
  7.2.2 DiscreteTimeQ[ System1]
 7.3 Transfer Function
  7.3.1 TransferFunction[ System1]
 7.4 Systems from Systems
  7.4.1 Dual[ System1]
  7.4.2 InverseSystem[ System1]
III  NONCOMMUTATIVE GRÖBNER BASES–NCGB
  ReleaseNotesNCGB
IV  NCGB: Easy Introduction
8 Introduction
  How to read this document
9 Simple Demos of Basic Commands
 9.1 To start a C++ GB session
  9.1.1 NCGBSetIntegerOverflow[False]
 9.2 Simplifying Expressions
 9.3 Making a Groebner Basis
 9.4 Reducing a polynomial by a GB
  9.4.1 Simplification via GB’s
10 NCGB Facilitates Natural Notation
 10.1 A Simplification example
 10.2 MakingGB’s and Inv[], Tp[]
 10.3 Simplification and GB’s revisited
 10.4 Saving lots of time when typing
  10.4.1 Saving time when typing relations involving inverses:NCMakeRelations
  10.4.2 Saving time working in algebras with involution: NCAddTranspose, NCAddAdjoint
  10.4.3 Saving time when setting orders: NCAutomaticOrder
11 Demo on NCGB - Matrix Computation
 11.1 The Partially Prescribed Inverse Problem
12 To Run NCGB - Template.nb
 12.1 Making a Groebner basis and NCProcess template
13 NCProcess: What It Does
 13.1 NCProcess: Input and Output
  13.1.1 When to stop
 13.2 Changing Variables
14 NCProcess: An Example
 14.1 Background
 14.2 The Problem
 14.3 Solution via a Prestrategy
 14.4 The end game
  14.4.1 Concluding Remarks
15 NCProcess: The Commands
 15.1 SetKnowns and SetUnknowns
 15.2 NCProcess
  15.2.1 NCProcess[aListOfPolynomials,iterations,fileName, Options ]
  15.2.2 Examples
 15.3 Commonly Used NCProcess Options and Commands
  15.3.1 UserSelect aListOfPolynomials
  15.3.2 DegreeCapaNumber1 and DegreeSumCapaNumber2
  15.3.3 MainUnknownsaListOfIndeterminates
  15.3.4 NCShortFormulaLength
  15.3.5 Getting Categories
 15.4 Typical use of the NCProcess command
 15.5 Details of NCProcess
  15.5.1 NCProcess1 command
  15.5.2 NCProcess2 command
 15.6 NCProcess1 and NCProcess2: The technical descriptions
V  NCGB: FOR THE MORE ADVANCED USER
16 NCProcess: The Concepts
 16.1 NCProcess: Input and Output
 16.2 Elimination
 16.3 What is a prestrategy?
  16.3.1 Prestrategy
  16.3.2 When to stop
  16.3.3 Redundant Equations
  16.3.4 Summary of a Prestrategy
 16.4 A strategy
17 Another Example: Solving the H Control Problem
 17.1 Problem statement
 17.2 The key relations: executable form
 17.3 Solving (HGRAIL) using NCProcess
  17.3.1 Step 1
  17.3.2 Step 2: The user attacks
  17.3.3 Step 3
  17.3.4 Step 4
 17.4 End Game
VI  NCGB: LISTS OF COMMANDS AND OTHER DETAILS
18 Ordering on variables and monomials
 18.1 Lex Order: The simplest elimination order
 18.2 Graded lex ordering: A non-elimination order
 18.3 Multigraded lex ordering : A variety of elimination orders
 18.4 The list of commands
  18.4.1 SetMonomialOrder[aListOfListsOfIndeterminates, . . . ]
  18.4.2 SetUnknowns[aListOfIndeterminates]
  18.4.3 SetUnKnowns[aListOfVariables]
  18.4.4 ClearMonomialOrder[]
  18.4.5 PrintMonomialOrder[]
  18.4.6 NCAutomaticOrder[ aMonomialOrder, aListOfPolynomials ]
 18.5 Fancier Order Setting Commands
  18.5.1 SetMonomialOrder[aListOfIndeterminants, n]
  18.5.2 ClearMonomialOrderN[n]
  18.5.3 ClearMonomialOrderAll[]
  18.5.4 WhatIsMultiplicityOfGrading[]
  18.5.5 WhatIsSetOfIndeterminants[n]
19 More NCProcess Options
 19.1 Creating small generating sets: RRTrue, RRByCatTrue, SBFalse, SBByCatTrue
 19.2 NCCollectOnVars
  19.2.1 NCCollectOnVars[aListOfExpressions, aListOfVariables]
 19.3 Turning screen output off
 19.4 Output Options
  19.4.1 Turning screen output off: PrintScreenOutputFalse
  19.4.2 TeXTrue
  19.4.3 ASCIIFalse
  19.4.4 NCGBFastRegularOutputFalse
  19.4.5 NCShortFormulas→-1
 19.5 NCProcess Summary Table
20 Commands for Making and Using GB’s
 20.1 Simplification
  20.1.1 NCSimplifyAll[expressions, startRelations, iterations]
  20.1.2 NCSimplifyRationalX1[expressions, startRelations, iterations]
 20.2 Making a Gröbner Basis and various options (with their defaults)
  20.2.1 NCMakeGB[aListOfPolynomials, iterations]
  20.2.2 UserSelect→{}(Distinguishing important relations)
  20.2.3 ClearUserSelect[]
  20.2.4 Deselect→{} (DISABLED)
  20.2.5 FinishedComputingBasisQ[] - Untested in 1999
  20.2.6 WhatIsPartialGB[]
  20.2.7 NCGBSetIntegerOverflow[False]
  20.2.8 PartialBasis[aNumber] - Untested in 1999
  20.2.9 IterationNumber[aList] or IterationNumber[ aNumber ] - UNTESTED 1999
  20.2.10 CleanUp
  20.2.11 SetCleanUpBasis[n] - Untested in 1999
  20.2.12 CleanUpBasisQ[] - Untested in 1999
  20.2.13 History Off
  20.2.14 Correspondence to sections ‘Simplification’ and ‘Reduction’
  20.2.15 Setting Monomial Orders- See Chapter 18
  20.2.16 ReinstateOrder[]
 20.3 Reduction
  20.3.1 Reduction[aListOfPolynomials, aListOfRules]
  20.3.2 PolyToRule[aPolynomial]
  20.3.3 RuleToPoly[aRule]
21 Commands for Making Small Bases for Ideals: Small Basis, Shrink Basis
 21.1 Brute Force: Shrinking
  21.1.1 SmallBasis[aListOfPolynomials, anotherListOfPolynomials, iter]
  21.1.2 SmallBasisByCategory[aListOfPolynomials, iter]
  21.1.3 ShrinkOutput[aListOfPolynomials,fileName]
 21.2 Brute Force: Many shrinks
  21.2.1 ShrinkBasis[aListOfPolynomials,iterations]
 21.3 First Example
 21.4 Second Example
 21.5 Smaller Bases and the Spreadsheet command
 21.6 How Small Basis commands relate to the similar NCProcess Options
22 Help in Typing Relations .
  22.0.1 NCMakeRelations[aSpecialList, aSpecialList, . . . ]
 22.1 Output notation for pseudoinverse and perp’s
  22.1.1 NCAddTranspose[aListOfExpressions]
  22.1.2 NCAddAdjoint[aListOfExpressions]
  22.1.3 Pulling important equations into your session from an NCProcess output - See GetCategories in §23.0.5.
  22.1.4 Help in typing Monomial Orders - See NCAutomaticOrder Section 18.4.6
23 Retrieving Categories and Regular Output
  23.0.5 GetCategory[aListOfVariables, NCPAns]
  23.0.6 GetCategory[aCharString,NCPAns]
  23.0.7 Clear[NCPAns]
 23.1 Example
 23.2 Creating Categories
  23.2.1 CreateCategories[aListOfPolynomials, aName]
 23.3 RegularOutput[aListOfPolynomials,“fileName”]
  23.3.1 RegularOutput[aListOfPolynomials,“fileName”]
 23.4 How to Really Change Regular Output
24 The Dimension of the Solution Set of a Set of Polynomial Equations
 24.1 The Commuting Case
 24.2 Noncommutative Case: Gelfand-Kirillov dimension
 24.3 References
 24.4 Commands
  24.4.1 NCHilbertCoefficient[integer1, aListOfExpressions, integer2, anOption]
  24.4.2 NCX1VectorDimension[alist]
25 Commands which are not supported
 25.1 A Mathematica Groebner Basis Package Without C++
 25.2 NCXWholeProcess[ polys, orderList, fileName, grobIters]
26 Getting NCALGEBRA and NCGB
 26.1 Getting NCAlgebra and NCGB off the web
 26.2 Getting NCAlgebra and NCGB through anonymous ftp
  26.2.1 The “.Z” file
  26.2.2 The “.gz” file
  26.2.3 The “.zip” file
  26.2.4 Look at the document
 26.3 The last step
 26.4 The NC directory structure
 26.5 Directory structure of NCAlgebra alone
27 Testing your version of NCGB
 27.1 Beginners
 27.2 Turning On Screen Output
 27.3 More Testing for Developers - DOES NOT WORK 2001
  27.3.1 Setting the Testing Environment
28 References
VII  DETAILS AND OLD OR NEW COMMANDS -ONLY ON THE WEB
29 History of the Production of a GB and Playing By Numbers
 29.1 Play By Numbers
  29.1.1 WhatAreGBNumbers[]
  29.1.2 WhatAreNumbers[]
  29.1.3 WhatIsPartialGB[aListOfIntegers]
  29.1.4 NumbersFromHistory[aPolynomial,history]
 29.2 History of the production of a GB
  29.2.1 WhatIsHistory[aListOfIntegers]
  29.2.2 WhatIsKludgeHistory[aListOfIntegers]
  29.2.3 More on the History of how NCMakeGB produced its answer
  29.2.4 The DAG associated with a History
30 Commands for Making Small Bases for Ideals: Remove Redundant
 30.1 Removing excess relations
  30.1.1 Introduction
  30.1.2 RemoveRedundant[]
  30.1.3 RemoveRedundant[aListOfPolynomials,history]
  30.1.4 RemoveRedundentByCategory[]
  30.1.5 RemoveRedundentByCategory[ aListOfPolynomials, history]
 30.2 Discussion of RemoveRedundent command
 30.3 Examples
 30.4 First Example
 30.5 Second Example
 30.6 Smaller Bases and the Spreadsheet command
31 NCXFindChangeOfVariables: The Long Description
 31.1 Details of the Algorithm
  31.1.1 Preparation
  31.1.2 Collect and extract
  31.1.3 Eliminate candidates which are too small
  31.1.4 Eliminate purely numerical terms from candidates - Default is Off
  31.1.5 Sort list of candidates by number of terms
  31.1.6 Multiply through by monomials - Default is off
  31.1.7 Run the Grobner basis algorithm
  31.1.8 Options
 31.2 Finding Coefficients of Variables in a Polynomial
  31.2.1 NCCoefficientList[Expression, aListOfIndeterminants]
 31.3 Main Change Of Variables Command
  31.3.1 NCXFindChangeOfVariables[ aListofPolynomials, anInteger, aString, Options]
  31.3.2 NCXPossibleChangeOfVariables[ aListofPolynomials, Options]
 31.4 Less Valuable Change of Variables Commands
  31.4.1 NCXMultiplyByMonomials[ aVerySpecialList]
  31.4.2 NCXAllPossibleChangeOfVariables[ aListOfPolynomials]
32 Representing Noncommutative Expressions with Commutative Ones.
  32.0.3 NCXRepresent[aListOfExpressions, aListOfVariables, aListOfDims, aListOfFunctions, aListOfExtraRules]
VIII   DETAILS ON INSTALLATION AND MAINTENANCE - ONLY ON THE WEB
33 NCAlgebra and NCGB Installation
 33.1 Running NCAlgebra
 33.2 Running NCGB
 33.3 Running SYStems
 33.4 Running OldMmaGB (which we do not support)
 33.5 Environment Settings
  33.5.1 NCAlgebra $NC$ Variables
  33.5.2 NCGB $NC$ Variables
 33.6 How to set up if someone else compiled the code — UNIX
  33.6.1 When your system administrator installed the code
  33.6.2 When your friend installed the code
 33.7 Informing TEX about notebook.sty
34 Installing NCGB the Hard Way
 34.1 GNU C++ Version 2.6.3
  34.1.1 Compiling the C++ part of NCGB
 34.2 Running NCGB
  34.2.1 Loading NCGB more quickly
35 For the Home Team
 35.1 How to make the PC version of NC
IX   TRULY OLD MATERIAL - ONLY ON THE WEB
36 An Old Example of Get Categories- Lots of info
37 Example of Hypothesis Selection in Discovering
38 Possibly Obsolete Command Descriptions
 38.1 NCMakeGB Options -maybe obsolete
  38.1.1 SupressCOutputFalse (less output to the screen )
  38.1.2 SupressAllCOutputFalse (very little outp ut to the screen)
  38.1.3 NCContinueMakeGB[iterationNumber]
 38.2 Special GB related commands- may not work
 38.3 Starting Relations
  38.3.1 SortRelations[aListOfRules]
  38.3.2 SortMonomials[aListOfVariables]
 38.4 Changing the default options for NCMakeGB
  38.4.1 ChangeNCMakeGBOptions[option,value] — need to update description
39 Generating Universal Gröbner Basis- MAY NOT WORK - untested in 1999
  39.0.2 AllOrders[aListofPolynomials, aListofIndeterminants]
  39.0.3 EquivalenceClasses[aListOfPolynomials] or EquivalenceClasses[aListOfPolynomials, Simpler]
  39.0.4 UniversalBasis[aListOfPolynomials, NumberOfIterations]
 39.1 Very Technical Commands
  39.1.1 GroebnerCutOffFlag[n_Integer]
  39.1.2 GroebnerCutOffMin[n_Integer]
  39.1.3 GroebnerCutOffSum[n_Integer]
40 Commands for Producing HTML Output
  40.0.4 ToHTMLString[expression]
  40.0.5 MakeGif[file,expression]
  40.0.6 HTML
 40.1 Using an input file
X  THE PACKAGE SYStems - ONLY ON THE WEB
41 Preface
42 How To Run The Systems Package
43 How To Contribute
44 What SYStems Does
45 Sample Applications
 45.1 Bounded Real Lemma
 45.2 Measurement Feedback H Control
  45.2.1 Derivation of CritW and sHWo
  45.2.2 The MIN/MAX in U
  45.2.3 Derivations of IAX, Critc, and Hopt
  45.2.4 Derivation of IAYI
  45.2.5 Derivation of critical q, k, and bterm
 45.3 Specializing to less general systems
  45.3.1 Specializing to linear systems
  45.3.2 Specializing Using The Doyle Glover Khargonekar Francis Simplifying Assumptions
  45.3.3 Demo: Linear Doyle Glover Kargonekar Francis Equations
46 References
47 Glossary For System Hamiltonian Calculations
  Complete Index