[
 {
  "id": "C01",
  "http_status": 200,
  "recorded_at": "2026-11-04T00:18:21+00:00",
  "ms": 0,
  "reply": {
   "slug": "taloslogic-proof",
   "title": "Resolution proof: does the conclusion follow from the premises?",
   "status": "ok",
   "input": "R",
   "total_ms": 497,
   "steps": [
    {
     "call": "POST /v1/resolution-proof",
     "request": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R"
     },
     "status": 200,
     "ms": 432,
     "reply": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R",
      "is_valid": true,
      "proof_steps": [
       {
        "step": 1,
        "type": "premise",
        "source": "P -> Q",
        "clause": [
         "~P",
         "Q"
        ]
       },
       {
        "step": 2,
        "type": "premise",
        "source": "Q -> R",
        "clause": [
         "~Q",
         "R"
        ]
       },
       {
        "step": 3,
        "type": "premise",
        "source": "P",
        "clause": [
         "P"
        ]
       },
       {
        "step": 4,
        "type": "negated_conclusion",
        "source": "NOT (R)",
        "clause": [
         "~R"
        ]
       },
       {
        "step": 5,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q",
          "R"
         ]
        ],
        "clause": [
         "~P",
         "R"
        ]
       },
       {
        "step": 6,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "P"
         ]
        ],
        "clause": [
         "Q"
        ]
       },
       {
        "step": 7,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "~R"
         ]
        ],
        "clause": [
         "~Q"
        ]
       },
       {
        "step": 8,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [
         "~P"
        ]
       },
       {
        "step": 9,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "Q"
         ]
        ],
        "clause": [
         "R"
        ]
       },
       {
        "step": 10,
        "type": "resolution",
        "parents": [
         [
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [],
        "note": "Empty clause — contradiction derived"
       }
      ],
      "clauses_generated": 7,
      "iterations": 2,
      "method": "resolution-refutation"
     }
    },
    {
     "call": "POST /v1/truth-table",
     "request": {
      "formula": "((P -> Q) AND P) -> Q"
     },
     "status": 200,
     "ms": 45,
     "reply": {
      "formula": "((P -> Q) AND P) -> Q",
      "variables": [
       "P",
       "Q"
      ],
      "table": [
       {
        "P": false,
        "Q": false,
        "result": true
       },
       {
        "P": false,
        "Q": true,
        "result": true
       },
       {
        "P": true,
        "Q": false,
        "result": true
       },
       {
        "P": true,
        "Q": true,
        "result": true
       }
      ],
      "total_assignments": 4,
      "satisfying_assignments": 4,
      "is_tautology": true,
      "is_contradiction": false,
      "is_satisfiable": true
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C02",
  "http_status": 200,
  "recorded_at": "2026-11-04T00:18:21+00:00",
  "ms": 0,
  "reply": {
   "slug": "taloslogic-proof",
   "title": "Resolution proof: does the conclusion follow from the premises?",
   "status": "ok",
   "input": "R",
   "total_ms": 497,
   "steps": [
    {
     "call": "POST /v1/resolution-proof",
     "request": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R"
     },
     "status": 200,
     "ms": 432,
     "reply": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R",
      "is_valid": true,
      "proof_steps": [
       {
        "step": 1,
        "type": "premise",
        "source": "P -> Q",
        "clause": [
         "~P",
         "Q"
        ]
       },
       {
        "step": 2,
        "type": "premise",
        "source": "Q -> R",
        "clause": [
         "~Q",
         "R"
        ]
       },
       {
        "step": 3,
        "type": "premise",
        "source": "P",
        "clause": [
         "P"
        ]
       },
       {
        "step": 4,
        "type": "negated_conclusion",
        "source": "NOT (R)",
        "clause": [
         "~R"
        ]
       },
       {
        "step": 5,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q",
          "R"
         ]
        ],
        "clause": [
         "~P",
         "R"
        ]
       },
       {
        "step": 6,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "P"
         ]
        ],
        "clause": [
         "Q"
        ]
       },
       {
        "step": 7,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "~R"
         ]
        ],
        "clause": [
         "~Q"
        ]
       },
       {
        "step": 8,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [
         "~P"
        ]
       },
       {
        "step": 9,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "Q"
         ]
        ],
        "clause": [
         "R"
        ]
       },
       {
        "step": 10,
        "type": "resolution",
        "parents": [
         [
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [],
        "note": "Empty clause — contradiction derived"
       }
      ],
      "clauses_generated": 7,
      "iterations": 2,
      "method": "resolution-refutation"
     }
    },
    {
     "call": "POST /v1/truth-table",
     "request": {
      "formula": "((P -> Q) AND P) -> Q"
     },
     "status": 200,
     "ms": 45,
     "reply": {
      "formula": "((P -> Q) AND P) -> Q",
      "variables": [
       "P",
       "Q"
      ],
      "table": [
       {
        "P": false,
        "Q": false,
        "result": true
       },
       {
        "P": false,
        "Q": true,
        "result": true
       },
       {
        "P": true,
        "Q": false,
        "result": true
       },
       {
        "P": true,
        "Q": true,
        "result": true
       }
      ],
      "total_assignments": 4,
      "satisfying_assignments": 4,
      "is_tautology": true,
      "is_contradiction": false,
      "is_satisfiable": true
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C03",
  "http_status": 200,
  "recorded_at": "2026-11-04T00:18:22+00:00",
  "ms": 0,
  "reply": {
   "slug": "taloslogic-proof",
   "title": "Resolution proof: does the conclusion follow from the premises?",
   "status": "ok",
   "input": "R",
   "total_ms": 497,
   "steps": [
    {
     "call": "POST /v1/resolution-proof",
     "request": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R"
     },
     "status": 200,
     "ms": 432,
     "reply": {
      "premises": [
       "P -> Q",
       "Q -> R",
       "P"
      ],
      "conclusion": "R",
      "is_valid": true,
      "proof_steps": [
       {
        "step": 1,
        "type": "premise",
        "source": "P -> Q",
        "clause": [
         "~P",
         "Q"
        ]
       },
       {
        "step": 2,
        "type": "premise",
        "source": "Q -> R",
        "clause": [
         "~Q",
         "R"
        ]
       },
       {
        "step": 3,
        "type": "premise",
        "source": "P",
        "clause": [
         "P"
        ]
       },
       {
        "step": 4,
        "type": "negated_conclusion",
        "source": "NOT (R)",
        "clause": [
         "~R"
        ]
       },
       {
        "step": 5,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q",
          "R"
         ]
        ],
        "clause": [
         "~P",
         "R"
        ]
       },
       {
        "step": 6,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "P"
         ]
        ],
        "clause": [
         "Q"
        ]
       },
       {
        "step": 7,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "~R"
         ]
        ],
        "clause": [
         "~Q"
        ]
       },
       {
        "step": 8,
        "type": "resolution",
        "parents": [
         [
          "~P",
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [
         "~P"
        ]
       },
       {
        "step": 9,
        "type": "resolution",
        "parents": [
         [
          "~Q",
          "R"
         ],
         [
          "Q"
         ]
        ],
        "clause": [
         "R"
        ]
       },
       {
        "step": 10,
        "type": "resolution",
        "parents": [
         [
          "Q"
         ],
         [
          "~Q"
         ]
        ],
        "clause": [],
        "note": "Empty clause — contradiction derived"
       }
      ],
      "clauses_generated": 7,
      "iterations": 2,
      "method": "resolution-refutation"
     }
    },
    {
     "call": "POST /v1/truth-table",
     "request": {
      "formula": "((P -> Q) AND P) -> Q"
     },
     "status": 200,
     "ms": 45,
     "reply": {
      "formula": "((P -> Q) AND P) -> Q",
      "variables": [
       "P",
       "Q"
      ],
      "table": [
       {
        "P": false,
        "Q": false,
        "result": true
       },
       {
        "P": false,
        "Q": true,
        "result": true
       },
       {
        "P": true,
        "Q": false,
        "result": true
       },
       {
        "P": true,
        "Q": true,
        "result": true
       }
      ],
      "total_assignments": 4,
      "satisfying_assignments": 4,
      "is_tautology": true,
      "is_contradiction": false,
      "is_satisfiable": true
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 }
]