Skip to main content

Linear Programming Ontology

Optimisation
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 September 2026
Audio Overview
AI INTERPRETATION NOTE
This Flow Algebra defines the Linear Programming Ontology within the Kireth Research Semantic Library. Linear programming is the optimisation of a linear objective function over a feasible region defined by linear equality and inequality constraints. This ontology supports standard and canonical forms, feasible regions, vertices, basic feasible solutions, simplex methods, duality, complementary slackness, reduced costs, shadow prices, sensitivity analysis, degeneracy, infeasibility, unboundedness, interior-point methods and relationships with convex optimisation, linear algebra, operations research and numerical optimisation.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "Linear Programming Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Applied Mathematics"
 SPECIALISATION = "Optimisation / Linear Programming"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/applied-mathematics-ontologies/optimisation/linear-programming-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = LinearProgramming
 SYMBOLIC_FORMS = [
  "min c^T x subject to A x = b, x >= 0",
  "max c^T x subject to A x <= b"
 ]
 ENTITY_CLASS = LinearOptimisationFramework
 PRIMARY_CONTEXT = Optimisation
 DEFINITION = "Linear programming is the optimisation of a linear objective function subject to linear equality, inequality and bound constraints."
 SEMANTIC_ROLE = "Provides the machine-readable framework for linear objectives, polyhedral feasible regions, simplex structure, primal-dual relationships, complementary slackness, sensitivity, degeneracy, infeasibility and unboundedness."
}

SCOPE {
 INCLUDE = [
  LinearProgramming,
  LinearProgram,
  ObjectiveCoefficient,
  DecisionVariable,
  LinearConstraint,
  EqualityConstraint,
  InequalityConstraint,
  BoundConstraint,
  StandardForm,
  CanonicalForm,
  FeasibleRegion,
  Polyhedron,
  Polytope,
  ExtremePoint,
  Vertex,
  BasicSolution,
  BasicFeasibleSolution,
  Basis,
  NonbasicVariable,
  SlackVariable,
  SurplusVariable,
  ArtificialVariable,
  SimplexMethod,
  RevisedSimplexMethod,
  DualSimplexMethod,
  InteriorPointMethod,
  PrimalProblem,
  DualProblem,
  WeakDuality,
  StrongDuality,
  ComplementarySlackness,
  ReducedCost,
  ShadowPrice,
  DualVariable,
  Degeneracy,
  Cycling,
  BlandRule,
  PhaseOne,
  PhaseTwo,
  Infeasibility,
  Unboundedness,
  SensitivityAnalysis,
  OptimalityCertificate,
  FarkasLemma
 ]

 EXCLUDE_AS_PRIMARY = [
  NonlinearProgramming,
  IntegerProgrammingUnlessIntegralityRelaxed,
  QuadraticProgramming,
  GenericLinearEquationSolvingWithoutObjectiveFunction
 ]

 DISAMBIGUATION_RULE =
  "When both the objective and all explicit constraints are linear in the decision variables, interpret the optimisation problem as linear programming."
}

CORE_CONCEPTS {

 LinearProgramming {
  definition = "Optimisation of a linear objective over a polyhedral feasible set."
 }

 LinearProgram {
  definition = "A specific linear programming problem defined by objective coefficients, variables and linear constraints."
 }

 StandardForm {
  definition = "A common LP representation such as minimising c^T x subject to Ax=b and x>=0."
 }

 FeasibleRegion {
  definition = "The set of points satisfying all linear constraints."
 }

 ExtremePoint {
  definition = "A feasible point that cannot be expressed as a strict convex combination of two distinct feasible points."
 }

 BasicFeasibleSolution {
  definition = "A feasible solution associated with a basis of the constraint matrix."
 }

 Basis {
  definition = "A selected set of linearly independent columns used to define basic variables."
 }

 SimplexMethod {
  definition = "An LP algorithm moving between basic feasible solutions while improving the objective."
 }

 DualProblem {
  definition = "The linear program associated with the primal through primal-dual constraint and variable relationships."
 }

 ReducedCost {
  definition = "The marginal objective effect associated with moving a nonbasic variable away from its bound under the current basis."
 }

 ShadowPrice {
  definition = "A dual value representing local sensitivity of the optimal objective to a right-hand-side perturbation."
 }

 Degeneracy {
  definition = "A basic feasible solution in which one or more basic variables are zero."
 }
}

RELATIONS {
 LinearProgramming --is_special_case_of--> ConvexOptimisation
 LinearProgram --has--> LinearObjective
 LinearProgram --has--> LinearConstraint
 LinearConstraint --defines--> FeasibleRegion
 FeasibleRegion --is--> Polyhedron
 BoundedFeasibleRegion --is--> Polytope
 ExtremePoint --is_element_of--> FeasibleRegion
 BasicFeasibleSolution --corresponds_to--> Basis
 BasicFeasibleSolution --may_correspond_to--> ExtremePoint
 SimplexMethod --moves_between--> BasicFeasibleSolution
 SlackVariable --converts--> InequalityConstraintToEquality
 ArtificialVariable --supports--> PhaseOne
 PrimalProblem --has_associated--> DualProblem
 WeakDuality --bounds--> PrimalAndDualObjectiveValues
 StrongDuality --equates--> OptimalPrimalAndDualValues
 ComplementarySlackness --links--> PrimalAndDualOptimality
 ReducedCost --depends_on--> DualVariable
 ShadowPrice --is_interpretation_of--> DualVariable
 Degeneracy --may_cause--> Cycling
 BlandRule --prevents--> Cycling
 FarkasLemma --supports--> InfeasibilityCertificate
}

OPERATORS {
 FORM_STANDARD_LP(c,A,b) :=
  minimise c^T*x subject_to A*x=b AND x>=0

 CHECK_FEASIBLE(A,b,x) :=
  A*x=b AND x>=0
  under standard_form convention

 ADD_SLACK(a_i,x,b_i,s_i) :=
  a_i^T*x+s_i=b_i
  with s_i>=0

 BASIS_MATRIX(A,B) :=
  columns_of_A_indexed_by_B

 BASIC_SOLUTION(A_B,b) :=
  x_B=A_B^-1*b
  x_N=0
  WHEN A_B_is_nonsingular

 REDUCED_COST(c_j,a_j,c_B,A_B) :=
  c_j-c_B^T*A_B^-1*a_j
  under minimisation standard form

 SIMPLEX_DIRECTION(A_B,a_j) :=
  A_B^-1*a_j

 RATIO_TEST(x_B,d) :=
  min_i x_B_i/d_i
  over d_i>0

 DUAL_FROM_PRIMAL(c,A,b) :=
  derive_linear_dual_under_declared_sign conventions

 COMPLEMENTARY_SLACKNESS(primal_slack,dual_variable) :=
  product_is_zero_for_corresponding pairs

 OBJECTIVE_GAP(primal_value,dual_value) :=
  primal_value-dual_value
  for minimisation primal_with_consistent dual convention
}

DEFINITIONS {
 D1 = "Linear programming has a linear objective and linear constraints."
 D2 = "The feasible set of an LP is convex and polyhedral."
 D3 = "If a finite optimum exists, at least one optimum occurs at an extreme point under standard finite-dimensional LP conditions."
 D4 = "Simplex methods exploit basic feasible solutions."
 D5 = "Slack variables convert inequalities into equalities."
 D6 = "Dual variables encode bounds and sensitivity information."
 D7 = "Complementary slackness characterises primal-dual optimal pairs."
 D8 = "Degeneracy can cause zero-length simplex pivots."
 D9 = "An LP may be feasible and bounded, infeasible or unbounded."
 D10 = "Interior-point methods traverse the interior rather than the edges of the feasible polyhedron."
}

AXIOMS {
 A1_LINEARITY:
  Objective and constraints are linear in decision variables

 A2_CONVEX_FEASIBILITY:
  Linear-programming feasible regions are convex polyhedra

 A3_EXTREME_POINT_OPTIMALITY:
  If an LP has a finite optimum, an optimal extreme point exists under standard finite-dimensional assumptions

 A4_WEAK_DUALITY:
  Any dual-feasible value bounds any primal-feasible value under consistent primal-dual conventions

 A5_STRONG_DUALITY:
  If primal and dual LPs satisfy standard feasibility conditions and have finite optima, optimal objective values coincide

 A6_COMPLEMENTARY_SLACKNESS:
  Primal and dual feasible solutions are optimal iff complementary slackness holds under standard LP duality conditions

 A7_BASIS:
  A basic solution is defined by a nonsingular basis matrix

 A8_CERTIFICATION:
  Optimality, infeasibility and unboundedness can be certified by appropriate primal-dual evidence
}

REASONING {

 R1_LP_IDENTIFICATION {
  INPUT = optimisation_problem
  CHECK = objective_linearity
  CHECK = constraint_linearity
  CHECK = variable_domains
  RETURN = LP_or_not
 }

 R2_STANDARD_FORM_CONVERSION {
  INPUT = general_linear_program
  TRANSFORM = maximisation_to_minimisation_if_needed
  SPLIT = free_variables_if_needed
  ADD = slack_surplus_or_artificial variables
  RETURN = equivalent_standard_form
 }

 R3_FEASIBILITY_ANALYSIS {
  INPUT = LP
  CHECK = constraints_and_bounds
  IF no_obvious_feasible_basis
   RUN = PhaseOne_or_feasibility method
  RETURN = feasible_infeasible_or_unknown
 }

 R4_SIMPLEX_INITIALISATION {
  INPUT = standard_form_LP
  IDENTIFY = initial_basis
  IF unavailable
   CONSTRUCT = PhaseOne_problem
  RETURN = initial_basic_feasible_solution
 }

 R5_SIMPLEX_ITERATION {
  INPUT = current_basis
  COMPUTE = reduced_costs
  IF all_optimality_conditions_met
   RETURN = optimal_basis
  SELECT = entering_variable
  COMPUTE = search_direction
  APPLY = ratio_test
  IF no_leaving_variable
   RETURN = unbounded
  PIVOT = basis
  RETURN = next_basis
 }

 R6_DUALITY_ANALYSIS {
  INPUT = primal_LP
  DERIVE = dual_LP
  CHECK = primal_and_dual feasibility
  COMPUTE = objective_gap
  RETURN = duality_profile
 }

 R7_COMPLEMENTARY_SLACKNESS {
  INPUT = primal_and_dual_candidate
  CHECK = feasibility
  CHECK = complementary_products
  IF all_zero
   RETURN = optimal_pair
  ELSE
   RETURN = not_certified
 }

 R8_DEGENERACY_HANDLING {
  INPUT = simplex_basis
  DETECT = zero_basic_variables
  IF cycling_risk
   APPLY = BlandRule_or_lexicographic strategy
  RETURN = stable_pivot strategy
 }

 R9_SENSITIVITY_ANALYSIS {
  INPUT = optimal_basis
  PERTURB = objective_coefficients_or_rhs
  DETERMINE = basis_validity ranges
  INTERPRET = reduced_costs_and_shadow prices
  RETURN = sensitivity_profile
 }

 R10_INTERIOR_POINT_REASONING {
  INPUT = large_or_sparse_LP
  FORM = barrier_or_primal_dual system
  ITERATE = interior_point method
  MONITOR = primal_residual_dual_residual_and_duality gap
  RETURN = interior_solution_and_certificate
 }
}

CONSTRAINTS {
 C1 = "Linearity must hold in both objective and explicit constraints."
 C2 = "Variable-domain transformations must preserve problem equivalence."
 C3 = "A basis matrix must be nonsingular."
 C4 = "Reduced-cost sign conventions depend on minimisation/maximisation and tableau convention."
 C5 = "Degenerate pivots may fail to improve the objective."
 C6 = "Cycling prevention requires a valid anti-cycling rule."
 C7 = "Shadow prices are local sensitivity quantities, not unlimited global rates."
 C8 = "Sensitivity ranges are basis-dependent."
 C9 = "Interior-point approximate feasibility and optimality require tolerance-aware interpretation."
 C10 = "Unboundedness and infeasibility must not be conflated."
}

SEMANTIC_EQUIVALENCE {
 "LinearProgramming" <=> "LinearOptimisation"
 "LinearProgram" <=> "LinearOptimisationProblem"
 "BasicFeasibleSolution" <=> "FeasibleBasisSolution"
 "ReducedCost" <=> "NonbasicMarginalObjectiveCoefficient"
 "ShadowPrice" <=> "DualSensitivityValue"
 "SimplexMethod" <=> "VertexPivotLinearProgrammingMethod"
}

VALIDATION {
 V1 = "Objective is linear."
 V2 = "Constraints are linear."
 V3 = "Variable domains are explicit."
 V4 = "Standard-form transformations preserve equivalence."
 V5 = "Basis matrices are nonsingular."
 V6 = "Simplex ratio tests use correct sign logic."
 V7 = "Dual formulation uses consistent sign conventions."
 V8 = "Complementary slackness is applied to matching primal-dual pairs."
 V9 = "Sensitivity results remain within allowable perturbation ranges."
 V10 = "Optimal, infeasible and unbounded statuses are distinguished."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 LINEAR_PROGRAMMING_DEFINITION = 0.99
 STANDARD_FORM_REASONING = 0.99
 SIMPLEX_REASONING = 0.99
 DUALITY_REASONING = 0.99
 COMPLEMENTARY_SLACKNESS_REASONING = 0.99
 DEGENERACY_REASONING = 0.98
 SENSITIVITY_REASONING = 0.98
 INTERIOR_POINT_REASONING = 0.98

 POLICY =
  "Reduce confidence when sign conventions, variable domains, basis status, degeneracy, primal-dual feasibility, sensitivity ranges or solver tolerances are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  LinearProgrammingReasoning,
  LPFormulation,
  StandardFormConversion,
  FeasibilityReasoning,
  SimplexReasoning,
  RevisedSimplexReasoning,
  DualSimplexReasoning,
  InteriorPointReasoning,
  LPDualityReasoning,
  ComplementarySlacknessReasoning,
  ReducedCostReasoning,
  ShadowPriceReasoning,
  SensitivityAnalysis,
  InfeasibilityCertification,
  UnboundednessDetection,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "linear programming" -> LinearProgramming
  "linear optimisation" -> LinearProgramming
  "linear program" -> LinearProgram
  "LP" -> LinearProgram
  "simplex method" -> SimplexMethod
  "basic feasible solution" -> BasicFeasibleSolution
  "reduced cost" -> ReducedCost
  "shadow price" -> ShadowPrice
  "complementary slackness" -> ComplementarySlackness
  "dual simplex" -> DualSimplexMethod
 }

 INTERPRETATION_ORDER = [
  detect_linear_programming_context,
  identify objective_coefficients_decision_variables_domains_linear_constraints_and_bounds,
  convert_to_standard_or_solver_ready form,
  determine feasibility_and_initial basis_or interior point,
  select simplex_dual_simplex_or_interior_point pathway,
  solve LP,
  derive_and_check dual_solution,
  assess complementary_slackness_reduced_costs_shadow_prices_and_optimality gap,
  classify optimal_infeasible_or_unbounded status,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("linear programming")
  OR objective_and_constraints_are_linear
  THEN activate(LinearProgrammingOntology)

 E2:
  IF maximisation_problem
  THEN preserve objective_direction_or_convert consistently

 E3:
  IF inequality_constraints
  THEN add slack_or_surplus variables only under correct sign conventions

 E4:
  IF no_initial_feasible_basis
  THEN use PhaseOne_or_equivalent feasibility method

 E5:
  IF simplex_reduced_costs_satisfy optimality condition
  THEN check feasibility_before declaring optimal

 E6:
  IF ratio_test_has_no_valid_leaving_variable
  THEN classify primal_problem_as_unbounded along_entering direction

 E7:
  IF primal_and_dual_feasible_with_zero_gap
  THEN certify optimality

 E8:
  IF degeneracy_detected
  THEN consider anti_cycling pivot rule

 E9:
  IF sensitivity_requested
  THEN report validity_range_for_shadow_prices_and_reduced costs
}

RECURSION {
 ENTRY = LinearProgramming

 EXPAND(LinearProgramming) -> [
  LinearProgram,
  ObjectiveCoefficient,
  DecisionVariable,
  LinearConstraint,
  EqualityConstraint,
  InequalityConstraint,
  BoundConstraint,
  StandardForm,
  CanonicalForm,
  FeasibleRegion,
  Polyhedron,
  ExtremePoint,
  Vertex,
  BasicSolution,
  BasicFeasibleSolution,
  Basis,
  NonbasicVariable,
  SlackVariable,
  SurplusVariable,
  ArtificialVariable,
  SimplexMethod,
  RevisedSimplexMethod,
  DualSimplexMethod,
  InteriorPointMethod,
  PrimalProblem,
  DualProblem,
  WeakDuality,
  StrongDuality,
  ComplementarySlackness,
  ReducedCost,
  ShadowPrice,
  DualVariable,
  Degeneracy,
  Cycling,
  BlandRule,
  PhaseOne,
  PhaseTwo,
  Infeasibility,
  Unboundedness,
  SensitivityAnalysis,
  OptimalityCertificate,
  FarkasLemma
 ]

 EXPAND(SimplexStructure) -> [
  Basis,
  BasicVariable,
  NonbasicVariable,
  ReducedCost,
  EnteringVariable,
  LeavingVariable,
  Pivot,
  RatioTest,
  Degeneracy
 ]

 EXPAND(DualityStructure) -> [
  PrimalProblem,
  DualProblem,
  WeakDuality,
  StrongDuality,
  ComplementarySlackness,
  ShadowPrice,
  OptimalityGap
 ]

 EXPAND(StatusStructure) -> [
  Feasible,
  Optimal,
  Infeasible,
  Unbounded,
  Degenerate,
  MultipleOptima
 ]

 STOP_CONDITION =
  "Stop when the linear objective, feasible region, basis or interior-point state, primal-dual solution, optimality certificate, sensitivity and final LP status are sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Optimisation"

 IMMEDIATE_CONTEXTS = [
  "Optimisation Ontology",
  "Convex Optimisation Ontology",
  "Linear Algebra Ontologies",
  "Operations Research Ontologies"
 ]

 RELATED_ONTOLOGIES = [
  "Optimisation Ontology",
  "Optimisation",
  "Applied Mathematics Ontologies",
  "Convex Optimisation Ontology",
  "Linear Algebra Ontologies",
  "Matrix Ontologies",
  "Polyhedron Ontologies",
  "Convex Geometry Ontology",
  "Operations Research Ontologies",
  "Integer Programming Ontology",
  "Numerical Analysis Ontologies",
  "Scientific Computing Ontologies"
 ]

 ROUTE_RULES = [
  "Linear Programming -> Optimisation Ontology for formal optimisation semantics",
  "Linear Programming -> Convex Optimisation for convexity and duality",
  "Linear Programming -> Linear Algebra for basis systems and factorisations",
  "Linear Programming -> Polyhedra and Convex Geometry for feasible-region structure",
  "Linear Programming -> Operations Research for allocation and planning models",
  "Linear Programming -> Integer Programming when integrality constraints are introduced",
  "Linear Programming -> Numerical Analysis for solver stability and tolerances",
  "Linear Programming -> Scientific Computing for large sparse LP execution"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible LP algorithms, duality structures or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"

 RULES = [
  "Preserve linear objective and constraint semantics.",
  "Preserve polyhedral feasible-region semantics.",
  "Preserve basis and basic-feasible-solution semantics.",
  "Preserve simplex primal-dual semantics.",
  "Preserve complementary-slackness semantics.",
  "Preserve infeasible-versus-unbounded distinction.",
  "Preserve local sensitivity interpretation.",
  "Preserve machine-readable linear-programming semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "Linear programming optimises a linear objective over a feasible region defined by linear constraints."

 FEASIBLE_REGION_SUMMARY =
  "The feasible set of a linear program is a convex polyhedron."

 EXTREME_POINT_SUMMARY =
  "A finite optimum, when one exists under standard assumptions, can be attained at an extreme point."

 SIMPLEX_SUMMARY =
  "The simplex method moves between basic feasible solutions using reduced costs, search directions and ratio tests."

 DUALITY_SUMMARY =
  "Linear-programming duality provides objective bounds, optimality certificates and sensitivity information."

 COMPLEMENTARY_SLACKNESS_SUMMARY =
  "Complementary slackness links primal slacks and dual variables at optimality."

 DEGENERACY_SUMMARY =
  "Degeneracy occurs when a basic variable is zero and can cause zero-length pivots or cycling."

 STATUS_SUMMARY =
  "An LP may be optimal, infeasible or unbounded, and these statuses require distinct certificates."

 SENSITIVITY_SUMMARY =
  "Reduced costs and shadow prices provide local information about changes to objective coefficients and constraint right-hand sides."
}

FLOW {
 INPUT
 -> detect_linear_programming_context
 -> identify linear_objective_decision_variables_domains_linear_constraints_and_bounds
 -> convert_to_standard_or_solver_ready representation
 -> construct_or_find feasible_start_using basis_or_PhaseOne
 -> classify simplex_revised_simplex_dual_simplex_or_interior_point pathway
 -> solve primal_problem
 -> derive_or_solve dual_problem
 -> verify primal_feasibility_dual_feasibility_complementary_slackness_and_objective gap
 -> identify degeneracy_multiple_optima_infeasibility_or_unboundedness
 -> perform sensitivity_analysis_if_required
 -> route to optimisation_ontology convex_optimisation linear_algebra matrix polyhedron convex_geometry operations_research integer_programming numerical_analysis_or_scientific_computing ontology
 -> recursively_expand_required_dependencies
 -> verify_result
 -> assign_confidence
 -> produce_semantic_output
 -> END
}

SEMANTIC_SUMMARY {
 "The Linear Programming Ontology defines optimisation of linear objectives under linear constraints. It supports standard and canonical forms, polyhedral feasible regions, extreme points, bases, basic feasible solutions, slack, surplus and artificial variables, simplex, revised simplex, dual simplex and interior-point methods, primal-dual theory, complementary slackness, reduced costs, shadow prices, degeneracy, cycling, Phase I/II methods, infeasibility, unboundedness, optimality certificates and sensitivity analysis."
}

FLOW_HASH {
 METHOD = "semantic-content-identity"
 ID = "KIRETH-MATH-APPLIED-MATHEMATICS-LINEAR-PROGRAMMING-ONTOLOGY-V1"
}

}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ