{
  "prefix": {
    "pe": "https://proofengine.info/proofs/poisson-spike-train-loglik-concave/",
    "prov": "http://www.w3.org/ns/prov#",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "schema": "http://schema.org/"
  },
  "entity": {
    "pe:claim": {
      "prov:type": "pe:Claim",
      "prov:label": "Consider a spike-train encoding model where spikes are generated by an inhomogeneous Poisson process with intensity lambda_t = f(eta_t), eta_t = x_t^T beta + h_t^T gamma + b, with convex parameter space for theta = (beta, gamma, b). If f is positive, convex, and log-concave, then the log-likelihood is concave in theta. Therefore every local maximum is global, ML fitting is a convex optimization problem, and the same holds for MAP inference under any log-concave prior on theta.",
      "prov:value": "Consider a spike-train encoding model where spikes are generated by an inhomogeneous Poisson process with intensity lambda_t = f(eta_t), eta_t = x_t^T beta + h_t^T gamma + b, with convex parameter space for theta = (beta, gamma, b). If f is positive, convex, and log-concave, then the log-likelihood is concave in theta. Therefore every local maximum is global, ML fitting is a convex optimization problem, and the same holds for MAP inference under any log-concave prior on theta."
    },
    "pe:evidence-A1": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "Composition: concave(affine) is concave",
      "pe:factId": "A1",
      "pe:evidenceType": "computed",
      "pe:method": "Convex analysis composition rule applied to log f and affine eta_t(theta)",
      "pe:result": "True"
    },
    "pe:evidence-A2": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "Convex(affine) is convex => -f(affine) concave",
      "pe:factId": "A2",
      "pe:evidenceType": "computed",
      "pe:method": "Convex analysis composition rule applied to f and affine eta_t(theta)",
      "pe:result": "True"
    },
    "pe:evidence-A3": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "Non-negative scalar times concave is concave",
      "pe:factId": "A3",
      "pe:evidenceType": "computed",
      "pe:method": "Scaling rule: n_t >= 0 preserves concavity of log f(eta_t)",
      "pe:result": "True"
    },
    "pe:evidence-A4": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "Log-likelihood is sum of concave terms => concave",
      "pe:factId": "A4",
      "pe:evidenceType": "computed",
      "pe:method": "Summation of concave terms from A1-A3 over time bins",
      "pe:result": "True"
    },
    "pe:evidence-A5": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "Numerical Hessian eigenvalues all <= 0 (f=exp)",
      "pe:factId": "A5",
      "pe:evidenceType": "computed",
      "pe:method": "Finite-difference Hessian at 5 random points; max eigenvalue -6.71e-02",
      "pe:result": "True"
    },
    "pe:evidence-A6": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "MAP multi-start optimization converges to unique optimum",
      "pe:factId": "A6",
      "pe:evidenceType": "computed",
      "pe:method": "10 random starts with Gaussian prior; spread 1.17e-10",
      "pe:result": "True"
    },
    "pe:evidence-A7": {
      "prov:type": "pe:ComputedEvidence",
      "prov:label": "ML multi-start optimization converges to unique optimum",
      "pe:factId": "A7",
      "pe:evidenceType": "computed",
      "pe:method": "10 random starts; log-likelihood spread 2.80e-06",
      "pe:result": "True"
    },
    "pe:verdict": {
      "prov:type": "pe:Verdict",
      "prov:label": "Verdict: PROVED",
      "prov:value": "PROVED",
      "pe:doi": "10.5281/zenodo.19645244"
    }
  },
  "activity": {
    "pe:determine-verdict": {
      "prov:type": "pe:VerdictDetermination",
      "prov:label": "Determine verdict from evidence",
      "prov:endTime": "2026-04-18"
    }
  },
  "agent": {
    "pe:proof-engine": {
      "prov:type": "prov:SoftwareAgent",
      "prov:label": "Proof Engine",
      "schema:version": "1.23.0",
      "schema:url": "https://github.com/yaniv-golan/proof-engine"
    }
  },
  "wasGeneratedBy": {
    "pe:gen-verdict": {
      "prov:entity": "pe:verdict",
      "prov:activity": "pe:determine-verdict"
    }
  },
  "wasDerivedFrom": {
    "pe:deriv-A4-from-A1": {
      "prov:generatedEntity": "pe:evidence-A4",
      "prov:usedEntity": "pe:evidence-A1"
    },
    "pe:deriv-A4-from-A2": {
      "prov:generatedEntity": "pe:evidence-A4",
      "prov:usedEntity": "pe:evidence-A2"
    },
    "pe:deriv-A4-from-A3": {
      "prov:generatedEntity": "pe:evidence-A4",
      "prov:usedEntity": "pe:evidence-A3"
    },
    "pe:deriv-A6-from-A4": {
      "prov:generatedEntity": "pe:evidence-A6",
      "prov:usedEntity": "pe:evidence-A4"
    },
    "pe:deriv-A7-from-A4": {
      "prov:generatedEntity": "pe:evidence-A7",
      "prov:usedEntity": "pe:evidence-A4"
    }
  },
  "wasAttributedTo": {
    "pe:attr-verdict": {
      "prov:entity": "pe:verdict",
      "prov:agent": "pe:proof-engine"
    }
  },
  "used": {
    "pe:used-A1": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A1"
    },
    "pe:used-A2": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A2"
    },
    "pe:used-A3": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A3"
    },
    "pe:used-A4": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A4"
    },
    "pe:used-A5": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A5"
    },
    "pe:used-A6": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A6"
    },
    "pe:used-A7": {
      "prov:activity": "pe:determine-verdict",
      "prov:entity": "pe:evidence-A7"
    }
  }
}