# gateHomotopy(GateMatrix,GateMatrix,InputGate) -- homotopy implemented via straight line programs

## Synopsis

• Function: gateHomotopy
• Usage:
HS = gateHomotopy(H,X,T)
• Inputs:
• H, an instance of the type GateMatrix, a family of systems (given by a column vector)
• X, an instance of the type GateMatrix, (a row vector of) variables
• T, an instance of the type InputGate, homotopy (continuation) parameter
• Optional inputs:
• Parameters => ..., default value null, specifies parameter names
• Software => ..., default value null, specifies where evaluation should be done (M2=top level, M2engine=core)
• Strategy => ..., default value compress, strategy is either to "compress" or not (any other value)
• Outputs:

## Description

Optional arguments:
• Software-- specifies how the homotopy is evaluated: (M2,M2engine)
 i1 : X = inputGate symbol X o1 = X o1 : InputGate i2 : Y = inputGate symbol Y o2 = Y o2 : InputGate i3 : T = inputGate symbol T o3 = T o3 : InputGate i4 : F = {X*X-1, Y*Y*Y-1} o4 = {((X * X) + -1), (((Y * Y) * Y) + -1)} o4 : List i5 : G = {X*X+Y*Y-1, X*X*X+Y*Y*Y-1} o5 = {(((X * X) + (Y * Y)) + -1), ((((X * X) * X) + ((Y * Y) * Y)) + -1)} o5 : List i6 : H = (1 - T) * F + T * G o6 = {(((1 + (-1 * T)) * ((X * X) + -1)) + (T * (((X * X) + (Y * Y)) + -1))), ------------------------------------------------------------------------ (((1 + (-1 * T)) * (((Y * Y) * Y) + -1)) + (T * ((((X * X) * X) + ((Y * ------------------------------------------------------------------------ Y) * Y)) + -1)))} o6 : List i7 : HS = gateHomotopy(transpose matrix {H},matrix{{X,Y}},T) o7 = GateHomotopy{...11...} o7 : GateHomotopy

## Caveat

The order of inputs for unexported internal evaluation functions (evaluateH, etc.) is fixed as follows: Parameters, X, T.