Package jline.api.sym

Class SageRestEngine

java.lang.Object
jline.api.sym.SageRestEngine
All Implemented Interfaces:
SymEngine

public class SageRestEngine extends Object implements SymEngine
SymEngine backed by the line-sage-rest service.

The service is SageMath behind the JSON protocol in sage/server.py. Every request is a single POST carrying the whole problem, so nothing is bind-mounted and the client works against a container, a remote host or a hand-started server alike.

Numeric coefficients are sent as decimal strings and read server side as exact rationals, which is what keeps the solve exact: a double coerced by the CAS would carry the binary rational nearest the decimal instead.

Copyright (c) 2012-2026, Imperial College London All rights reserved.
  • Field Details

    • DEFAULT_TIMEOUT_SECONDS

      public static final int DEFAULT_TIMEOUT_SECONDS
      Default per-request timeout, in seconds.
      See Also:
  • Constructor Details

    • SageRestEngine

      public SageRestEngine(String baseUrl)
      Parameters:
      baseUrl - base URL of the service, e.g. "http://localhost:8080"
  • Method Details

    • setTimeoutSeconds

      public SageRestEngine setTimeoutSeconds(int seconds)
      Sets the per-request timeout. The server enforces it too, so a runaway symbolic solve is killed there rather than merely abandoned here.
      Parameters:
      seconds - timeout in seconds; not positive disables it
      Returns:
      this engine
    • getTimeoutSeconds

      public int getTimeoutSeconds()
      Returns:
      the per-request timeout in seconds
    • getBaseUrl

      public String getBaseUrl()
      Returns:
      the base URL this engine posts to
    • name

      public String name()
      Description copied from interface: SymEngine
      Name of the backing engine, e.g. "sage".
      Specified by:
      name in interface SymEngine
    • isAvailable

      public boolean isAvailable()
      Description copied from interface: SymEngine
      True if the engine answers a health probe.
      Specified by:
      isAvailable in interface SymEngine
    • info

      public com.google.gson.JsonObject info() throws IOException
      Reads the service identity, used to tell a line-sage-rest server apart from another service listening on the same conventional port.
      Returns:
      the /api/v1/info document
      Throws:
      IOException - if the service is unreachable
    • solveCTMC

      public SymEngine.CTMCSolution solveCTMC(String[][] Q, List<String> symbols) throws IOException
      Description copied from interface: SymEngine
      Symbolic stationary distribution of a CTMC, pi Q = 0 with sum(pi) = 1.
      Specified by:
      solveCTMC in interface SymEngine
      Parameters:
      Q - generator entries as expression strings, row major
      symbols - the symbols appearing in Q, e.g. x1..xE
      Returns:
      the solution, with pi also split over a common denominator
      Throws:
      IOException - if the engine is unreachable or rejects the request
    • ctmcSensitivity

      public SymEngine.Sensitivity ctmcSensitivity(String[][] Q, List<String> symbols, String theta, List<String> reward) throws IOException
      Description copied from interface: SymEngine
      Exact parametric sensitivity of a steady-state reward.
      Specified by:
      ctmcSensitivity in interface SymEngine
      Parameters:
      Q - generator entries as expression strings, row major
      symbols - the symbols appearing in Q
      theta - the symbol to differentiate with respect to
      reward - reward rate per state, or null for the distribution alone
      Returns:
      the sensitivity of the distribution and, if a reward is given, of its mean
      Throws:
      IOException - if the engine is unreachable or rejects the request
    • simplify

      public List<String> simplify(List<String> exprs, String form) throws IOException
      Description copied from interface: SymEngine
      Rewrites expressions into a normal form.
      Specified by:
      simplify in interface SymEngine
      Parameters:
      exprs - the expressions
      form - one of simplify, factor, together, cancel, expand, latex
      Returns:
      the rewritten expressions, in the input order
      Throws:
      IOException - if the engine is unreachable or rejects the request
    • diff

      public List<String> diff(List<String> exprs, String variable, int order) throws IOException
      Description copied from interface: SymEngine
      Differentiates expressions.
      Specified by:
      diff in interface SymEngine
      Parameters:
      exprs - the expressions
      variable - the differentiation variable
      order - the order of the derivative, at least 1
      Returns:
      the derivatives, in the input order
      Throws:
      IOException - if the engine is unreachable or rejects the request
    • eval

      public double[] eval(List<String> exprs, Map<String,Double> assignment) throws IOException
      Description copied from interface: SymEngine
      Substitutes values for symbols and evaluates.
      Specified by:
      eval in interface SymEngine
      Parameters:
      exprs - the expressions
      assignment - value of each symbol
      Returns:
      the numeric values, NaN where a free symbol remains
      Throws:
      IOException - if the engine is unreachable or rejects the request
    • fluidODEs

      public SymEngine.FluidODEs fluidODEs(List<String> rhs, List<String> vars, List<String> want) throws IOException
      Description copied from interface: SymEngine
      Jacobian, LaTeX form and equilibria of a fluid vector field.
      Specified by:
      fluidODEs in interface SymEngine
      Parameters:
      rhs - the right hand side of dx/dt, one expression per state variable
      vars - the state variable names
      want - any of jacobian, latex, equilibria
      Returns:
      the requested items
      Throws:
      IOException - if the engine is unreachable or rejects the request