{
  "schema": 1,
  "lean_version": "Lean (version 4.19.0, x86_64-unknown-linux-gnu, commit 6caaee842e94, Release)",
  "mathlib": {
    "repository": "https://github.com/leanprover-community/mathlib4",
    "tag": "v4.19.0",
    "commit": "c44e0c8ee63ca166450922a373c7409c5d26b00b",
    "manifest_sha256": "5c6421b650bc87a2427a892a39e5522dc44543ca4ac1bd6e9f08d536c044a752",
    "toolchain": "leanprover/lean4:v4.19.0",
    "license": "Apache-2.0",
    "qualification": "Fresh compilation required; this lock alone is not proof evidence."
  },
  "source": "proofs/ArchitectureForce.lean",
  "source_sha256": "36f96515d885c06b824c3b6aa3fb8e915175fe4c3dbb441f0a143448399f746c",
  "claims_sha256": "c9a30b879de6da7ae6051354e40249fa5c9f2e733d7c63ab7e41bd0a4e1ea8d2",
  "command": "lake --no-cache env lean -DwarningAsError=true proofs/ArchitectureForce.lean (from pinned mathlib workspace)",
  "claims": [
    {
      "id": "architecture-material-cut-force",
      "theorem": "KenomaArchitectureForce.material_cut_force",
      "model_function": "materialCut",
      "domain": "Real; J > 0 and stretch > 0",
      "claim": "Declared Cauchy fibre stress times declared current projected cut area equals nominal stress times reference area",
      "not_proved": "The geometry or Nanson premises, a heterogeneous area integral, JavaScript arithmetic, equilibrium or physiology",
      "assumptions": "All parameters are real. J > 0 and fibre stretch > 0. Current projected area is defined as A0*J/stretch and Cauchy fibre stress as nominal*stretch/J. Positivity of A0 and nonnegative nominal stress are additional physical-use conditions, not hypotheses needed by this identity.",
      "limitations": "The geometry or Nanson premises, a heterogeneous area integral, JavaScript arithmetic, equilibrium or physiology.",
      "statement_lean": "theorem material_cut_force (A0 nominal J stretch : \u211d)\n    (hJ : 0 < J) (hstretch : 0 < stretch) :\n    cauchyFiberStress nominal J stretch * currentProjectedArea A0 J stretch =\n      nominal * A0",
      "implementation": "contributions/architecture-force/model.mjs (materialCut). Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    },
    {
      "id": "architecture-parallel-area-aggregation",
      "theorem": "KenomaArchitectureForce.parallel_area_aggregation",
      "model_function": "aggregateTypes",
      "domain": "Real; total two-group reference area > 0",
      "claim": "Total area times area-weighted nominal stress equals the two-group force sum",
      "not_proved": "Measured fibre counts/areas, biological recruitment, lateral load sharing or the arbitrary-length JavaScript sum",
      "assumptions": "All parameters are real and n1*area1 + n2*area2 > 0. The two-group force and area-weighted stress are exactly the displayed definitions. Nonnegative fibre counts, areas and stresses are separate physical-use conditions.",
      "limitations": "Measured fibre counts/areas, biological recruitment, lateral load sharing or the arbitrary-length JavaScript sum.",
      "statement_lean": "theorem parallel_area_aggregation (n1 area1 stress1 n2 area2 stress2 : \u211d)\n    (hArea : 0 < n1 * area1 + n2 * area2) :\n    (n1 * area1 + n2 * area2) *\n      areaWeightedStress n1 area1 stress1 n2 area2 stress2 =\n      parallelForce n1 area1 stress1 n2 area2 stress2",
      "implementation": "contributions/architecture-force/model.mjs (aggregateTypes). Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    },
    {
      "id": "architecture-projection-once",
      "theorem": "KenomaArchitectureForce.projection_once",
      "model_function": "forceFromArea",
      "domain": "Real scalar identity; physical use separately restricts a cosine to [0,1]",
      "claim": "Projecting force once equals multiplying stress by an already projected area",
      "not_proved": "A paper's PCSA definition, actual pennation, tendon routing or cancellation of transverse force",
      "assumptions": "Area, nominal stress and cosine are real scalars. The same cosine is used once, either on force or on area; physical use separately requires a cosine in [0,1] and an explicitly declared PCSA/stress convention.",
      "limitations": "A paper's PCSA definition, actual pennation, tendon routing or cancellation of transverse force.",
      "statement_lean": "theorem projection_once (area nominal cosine : \u211d) :\n    (nominal * area) * cosine = nominal * (area * cosine)",
      "implementation": "contributions/architecture-force/model.mjs (forceFromArea). Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    },
    {
      "id": "architecture-two-group-projected-sum",
      "theorem": "KenomaArchitectureForce.two_group_projected_sum",
      "model_function": "aggregateTypes",
      "domain": "Real scalar identity",
      "claim": "Two separate area/stress/cosine products equal the sum of separately projected group forces",
      "not_proved": "A three-dimensional aponeurosis solution or a calibrated fibre orientation distribution",
      "assumptions": "Counts, reference areas, nominal stresses and cosines are real scalars. The same two declared independent group terms occur on both sides; physical use separately requires meaningful nonnegative groups and cosines in [0,1].",
      "limitations": "A three-dimensional aponeurosis solution or a calibrated fibre orientation distribution.",
      "statement_lean": "theorem two_group_projected_sum (n1 area1 stress1 cosine1 n2 area2 stress2 cosine2 : \u211d) :\n    (n1 * area1) * (stress1 * cosine1) +\n      (n2 * area2) * (stress2 * cosine2) =\n    (n1 * area1 * stress1) * cosine1 +\n      (n2 * area2 * stress2) * cosine2",
      "implementation": "contributions/architecture-force/model.mjs (aggregateTypes). Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    },
    {
      "id": "architecture-series-balance-telescopes",
      "theorem": "KenomaArchitectureForce.series_balance_telescopes",
      "model_function": "lateralExchange",
      "domain": "Real scalar identity with one shared internal force",
      "claim": "Summing two declared cell balances cancels the shared internal section force",
      "not_proved": "Equilibrium premises, compatible displacement, ECM stiffness or force generation",
      "assumptions": "Left, middle and right section forces and q1, q2 are real scalars. The adjacent cell expressions use one shared middle force with opposite signs. Zero cell balance and static equilibrium are additional premises, not conclusions.",
      "limitations": "Equilibrium premises, compatible displacement, ECM stiffness or force generation.",
      "statement_lean": "theorem series_balance_telescopes (left middle right q1 q2 : \u211d) :\n    (middle - left + q1) + (right - middle + q2) =\n      right - left + q1 + q2",
      "implementation": "contributions/architecture-force/model.mjs (lateralExchange). Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    },
    {
      "id": "architecture-paired-exchange-power",
      "theorem": "KenomaArchitectureForce.paired_exchange_power",
      "model_function": null,
      "domain": "Real scalar identity with equal and opposite paired forces",
      "claim": "Paired internal force power equals force times relative velocity",
      "not_proved": "The force law, energy storage, dissipation sign, no-slip constraint or biological bonding",
      "assumptions": "q, v1 and v2 are real scalars. The paired force on the second point is defined to be -q. Equal velocities, constitutive force laws and any dissipation inequality are not assumed or established.",
      "limitations": "The force law, energy storage, dissipation sign, no-slip constraint or biological bonding.",
      "statement_lean": "theorem paired_exchange_power (q v1 v2 : \u211d) :\n    q * v1 + (-q) * v2 = q * (v1 - v2)",
      "implementation": "contributions/architecture-force/model.mjs; paired-exchange power is a mathematical contract only. Numerical contracts are checked separately; no implementation refinement proof.",
      "status": "checked",
      "axioms": [
        "propext",
        "Classical.choice",
        "Quot.sound"
      ]
    }
  ]
}
