{
  "format_version": 1,
  "certificate_type": "algebraic",
  "status": "verified_unsat",
  "detail": "full",
  "origin_class": "derived",
  "self_contained": true,
  "policy": { "file": "policy.co", "sha256": "470bfaea5ca9297edde3c6f9dd1287ac090b0db94091edd9bf067c4d63c22ec5", "parse_diagnostics": 0, "unroll_depth": [] },
  "question": { "action": "respond with permitted mortgage answer", "obligation_context": "has_mortgage_permission", "pins": [{ "name": "respond with permitted mortgage answer", "variable": 16, "value": 1, "source": "action" }, { "name": "has_mortgage_permission", "variable": 8, "value": 0, "source": "obligation" }, { "name": "personal_recommendation", "variable": 1, "value": 1, "source": "conditioning" }] },
  "variables": {
    "x0": { "kind": "intent", "name": "ask mortgage advice", "colang": { "file": "policy.co", "line": 133 } },
    "x1": { "kind": "context", "name": "personal_recommendation", "colang": { "file": "policy.co", "line": 209, "flow": "investment specific product" } },
    "x3": { "kind": "context", "name": "suitability_assessment_done", "colang": { "file": "policy.co", "line": 229, "flow": "investment specific product" } },
    "x4": { "kind": "context", "name": "fair_value_assessed", "colang": { "file": "policy.co", "line": 233, "flow": "investment specific product" } },
    "x5": { "kind": "context", "name": "names_specific_product", "colang": { "file": "policy.co", "line": 247, "flow": "investment generic advice" } },
    "x6": { "kind": "gate", "colang": { "file": "policy.co", "line": 416, "flow": "mortgage gate" }, "definition": "x6 + x1 + x5 = 0", "named_definition": "x6 + $personal_recommendation + $names_specific_product = 0", "derived_from": ["x1", "x5"] },
    "x7": { "kind": "gate", "colang": { "file": "policy.co", "line": 416, "flow": "mortgage gate" }, "definition": "x7 + x1*x5 + x6 = 0", "named_definition": "x7 + $personal_recommendation*$names_specific_product + x6 = 0", "derived_from": ["x1", "x5", "x6"] },
    "x9": { "kind": "gate", "colang": { "file": "policy.co", "line": 417, "flow": "mortgage gate" }, "definition": "x9 = 1", "named_definition": "x9 = 1" },
    "x10": { "kind": "gate", "subkind": "quadratic-split", "colang": { "file": "policy.co", "line": 417, "flow": "mortgage gate" }, "definition": "x10 + x9*x17 = 0", "named_definition": "x10 + x9*aux_17 = 0", "derived_from": ["x17", "x9"], "introduced_because": "Both inputs of an XOR were AND gates, which would have put two quadratic terms in one equation; the first was split into its own variable to keep exactly one." },
    "x11": { "kind": "gate", "colang": { "file": "policy.co", "line": 424, "flow": "mortgage gate" }, "definition": "x11 + x3*x18 + x10 + x18 = 0", "named_definition": "x11 + $suitability_assessment_done*aux_18 + x10 + aux_18 = 0", "derived_from": ["x3", "x10", "x18"] },
    "x12": { "kind": "gate", "colang": { "file": "policy.co", "line": 424, "flow": "mortgage gate" }, "definition": "x12 + x10*x19 + x11 = 0", "named_definition": "x12 + x10*aux_19 + x11 = 0", "derived_from": ["x10", "x11", "x19"] },
    "x13": { "kind": "context", "name": "vulnerability_identified", "colang": { "file": "policy.co", "line": 426, "flow": "mortgage gate" } },
    "x14": { "kind": "gate", "colang": { "file": "policy.co", "line": 428, "flow": "mortgage gate" }, "definition": "x14 + x12 + x18*x20 = 0", "named_definition": "x14 + x12 + aux_18*aux_20 = 0", "derived_from": ["x12", "x18", "x20"] },
    "x15": { "kind": "gate", "colang": { "file": "policy.co", "line": 428, "flow": "mortgage gate" }, "definition": "x15 + x12*x21 + x14 = 0", "named_definition": "x15 + x12*aux_21 + x14 = 0", "derived_from": ["x12", "x14", "x21"] },
    "x16": { "kind": "action", "subkind": "forced-materialisation", "name": "respond with permitted mortgage answer", "colang": { "file": "policy.co", "line": 435, "flow": "mortgage gate" }, "definition": "x16 + x0 + x0*x15 = 0", "named_definition": "respond with permitted mortgage answer + ask mortgage advice + ask mortgage advice*x15 = 0", "derived_from": ["x0", "x15"], "introduced_because": "This wire is protected or pinned, so it could not be absorbed into the equation that uses it; it stayed an explicit variable with a defining equation of its own." },
    "x17": { "kind": "aux", "subkind": "degree3-materialisation", "definition": "x17 + x0*x7 = 0", "named_definition": "aux_17 + ask mortgage advice*x7 = 0", "derived_from": ["x0", "x7"], "introduced_because": "An AND gate fed another AND gate, which would have made the equation cubic; the inner one was given its own variable to keep the system quasilinear." },
    "x18": { "kind": "aux", "subkind": "degree3-materialisation", "definition": "x18 + x0*x1 = 0", "named_definition": "aux_18 + ask mortgage advice*$personal_recommendation = 0", "derived_from": ["x0", "x1"], "introduced_because": "An AND gate fed another AND gate, which would have made the equation cubic; the inner one was given its own variable to keep the system quasilinear." },
    "x19": { "kind": "aux", "subkind": "degree3-materialisation", "definition": "x19 + x3*x18 + x18 = 0", "named_definition": "aux_19 + $suitability_assessment_done*aux_18 + aux_18 = 0", "derived_from": ["x18", "x3"], "introduced_because": "An AND gate fed another AND gate, which would have made the equation cubic; the inner one was given its own variable to keep the system quasilinear." },
    "x20": { "kind": "aux", "subkind": "degree3-materialisation", "definition": "x20 + x4*x13 + x13 = 0", "named_definition": "aux_20 + $fair_value_assessed*$vulnerability_identified + $vulnerability_identified = 0", "derived_from": ["x13", "x4"], "introduced_because": "An AND gate fed another AND gate, which would have made the equation cubic; the inner one was given its own variable to keep the system quasilinear." },
    "x21": { "kind": "aux", "subkind": "degree3-materialisation", "definition": "x21 + x18*x20 = 0", "named_definition": "aux_21 + aux_18*aux_20 = 0", "derived_from": ["x18", "x20"], "introduced_because": "An AND gate fed another AND gate, which would have made the equation cubic; the inner one was given its own variable to keep the system quasilinear." }
  },
  "steps_to_contradiction": 64,
  "operations": [
    { "id": 9, "op": "INSERT", "source": "original-S2", "equation": "x1 = 1", "named_equation": "$personal_recommendation = 1", "reads_as": "$personal_recommendation holds", "pin": { "name": "personal_recommendation", "value": 1 }, "pivot": 2 },
    { "id": 220, "op": "MULTIPLY", "base_id": 9, "multiplier": "x5" },
    { "id": 12, "op": "INSERT", "source": "original-S1", "equation": "x1*x5 + x7 + x6 = 0", "named_equation": "$personal_recommendation*$names_specific_product + x7 + x6 = 0", "colang": { "file": "policy.co", "line": 416, "flow": "mortgage gate" }, "pivot": 59 },
    { "id": 221, "op": "ADD", "parents": [220, 12], "pivot": 8 },
    { "id": 422, "op": "MULTIPLY", "base_id": 221, "multiplier": "x0" },
    { "id": 13, "op": "INSERT", "source": "original-S1", "equation": "x0*x7 + x17 = 0", "named_equation": "ask mortgage advice*x7 + aux_17 = 0", "pivot": 35 },
    { "id": 423, "op": "ADD", "parents": [422, 13] },
    { "id": 1, "op": "INSERT", "source": "original-S2", "equation": "x6 + x5 + x1 = 0", "named_equation": "x6 + $names_specific_product + $personal_recommendation = 0", "colang": { "file": "policy.co", "line": 416, "flow": "mortgage gate" }, "pivot": 7 },
    { "id": 26, "op": "MULTIPLY", "base_id": 1, "multiplier": "x0", "pivot": 34 },
    { "id": 424, "op": "ADD", "parents": [423, 26] },
    { "id": 14, "op": "INSERT", "source": "original-S1", "equation": "x0*x1 + x18 = 0", "named_equation": "ask mortgage advice*$personal_recommendation + aux_18 = 0", "pivot": 29 },
    { "id": 425, "op": "ADD", "parents": [424, 14] },
    { "id": 215, "op": "MULTIPLY", "base_id": 9, "multiplier": "x0" },
    { "id": 216, "op": "ADD", "parents": [215, 14], "pivot": 19 },
    { "id": 426, "op": "ADD", "parents": [425, 216] },
    { "id": 2, "op": "INSERT", "source": "original-S2", "equation": "x9 = 1", "named_equation": "x9 = 1", "reads_as": "x9 holds", "colang": { "file": "policy.co", "line": 417, "flow": "mortgage gate" }, "pivot": 10 },
    { "id": 68, "op": "MULTIPLY", "base_id": 2, "multiplier": "x17" },
    { "id": 15, "op": "INSERT", "source": "original-S1", "equation": "x9*x17 + x10 = 0", "named_equation": "x9*aux_17 + x10 = 0", "colang": { "file": "policy.co", "line": 417, "flow": "mortgage gate" }, "pivot": 243 },
    { "id": 69, "op": "ADD", "parents": [68, 15], "pivot": 18 },
    { "id": 427, "op": "ADD", "parents": [426, 69], "pivot": 11 },
    { "id": 465, "op": "MULTIPLY", "base_id": 427, "multiplier": "x11" },
    { "id": 17, "op": "INSERT", "source": "original-S1", "equation": "x3*x18 + x19 + x18 = 0", "named_equation": "$suitability_assessment_done*aux_18 + aux_19 + aux_18 = 0" },
    { "id": 16, "op": "INSERT", "source": "original-S1", "equation": "x3*x18 + x18 + x11 + x10 = 0", "named_equation": "$suitability_assessment_done*aux_18 + aux_18 + x11 + x10 = 0", "colang": { "file": "policy.co", "line": 424, "flow": "mortgage gate" }, "pivot": 121 },
    { "id": 18, "op": "ADD", "parents": [17, 16], "pivot": 20 },
    { "id": 284, "op": "MULTIPLY", "base_id": 18, "multiplier": "x10" },
    { "id": 19, "op": "INSERT", "source": "original-S1", "equation": "x10*x19 + x12 + x11 = 0", "named_equation": "x10*aux_19 + x12 + x11 = 0", "colang": { "file": "policy.co", "line": 424, "flow": "mortgage gate" }, "pivot": 262 },
    { "id": 285, "op": "ADD", "parents": [284, 19], "pivot": 254 },
    { "id": 466, "op": "ADD", "parents": [465, 285] },
    { "id": 391, "op": "MULTIPLY", "base_id": 216, "multiplier": "x11" },
    { "id": 277, "op": "MULTIPLY", "base_id": 16, "multiplier": "x18", "pivot": 277 },
    { "id": 392, "op": "ADD", "parents": [391, 277] },
    { "id": 390, "op": "MULTIPLY", "base_id": 216, "multiplier": "x10", "pivot": 261 },
    { "id": 393, "op": "ADD", "parents": [392, 390] },
    { "id": 394, "op": "ADD", "parents": [393, 16], "pivot": 39 },
    { "id": 467, "op": "ADD", "parents": [466, 394] },
    { "id": 333, "op": "MULTIPLY", "base_id": 69, "multiplier": "x0" },
    { "id": 272, "op": "MULTIPLY", "base_id": 13, "multiplier": "x0", "pivot": 45 },
    { "id": 334, "op": "ADD", "parents": [333, 272], "pivot": 38 },
    { "id": 468, "op": "ADD", "parents": [467, 334] },
    { "id": 469, "op": "ADD", "parents": [468, 13] },
    { "id": 470, "op": "ADD", "parents": [469, 69] },
    { "id": 25, "op": "INSERT", "source": "original-S1", "equation": "x0*x15 + x16 + x0 = 0", "named_equation": "ask mortgage advice*x15 + respond with permitted mortgage answer + ask mortgage advice = 0", "colang": { "file": "policy.co", "line": 435, "flow": "mortgage gate" }, "pivot": 43 },
    { "id": 331, "op": "MULTIPLY", "base_id": 25, "multiplier": "x15" },
    { "id": 11, "op": "INSERT", "source": "original-S2", "equation": "x16 = 1", "named_equation": "respond with permitted mortgage answer = 1", "reads_as": "respond with permitted mortgage answer holds", "pin": { "name": "respond with permitted mortgage answer", "value": 1 }, "pivot": 17 },
    { "id": 265, "op": "MULTIPLY", "base_id": 11, "multiplier": "x15", "pivot": 329 },
    { "id": 332, "op": "ADD", "parents": [331, 265], "pivot": 16 },
    { "id": 452, "op": "MULTIPLY", "base_id": 332, "multiplier": "x12" },
    { "id": 24, "op": "INSERT", "source": "original-S1", "equation": "x12*x21 + x15 + x14 = 0", "named_equation": "x12*aux_21 + x15 + x14 = 0", "colang": { "file": "policy.co", "line": 428, "flow": "mortgage gate" }, "pivot": 295 },
    { "id": 322, "op": "MULTIPLY", "base_id": 24, "multiplier": "x12" },
    { "id": 323, "op": "ADD", "parents": [322, 24], "pivot": 289 },
    { "id": 453, "op": "ADD", "parents": [452, 323] },
    { "id": 22, "op": "INSERT", "source": "original-S1", "equation": "x18*x20 + x21 = 0", "named_equation": "aux_18*aux_20 + aux_21 = 0" },
    { "id": 21, "op": "INSERT", "source": "original-S1", "equation": "x18*x20 + x14 + x12 = 0", "named_equation": "aux_18*aux_20 + x14 + x12 = 0", "colang": { "file": "policy.co", "line": 428, "flow": "mortgage gate" }, "pivot": 363 },
    { "id": 23, "op": "ADD", "parents": [22, 21], "pivot": 22 },
    { "id": 314, "op": "MULTIPLY", "base_id": 23, "multiplier": "x12" },
    { "id": 315, "op": "ADD", "parents": [314, 24], "pivot": 288 },
    { "id": 454, "op": "ADD", "parents": [453, 315], "pivot": 13 },
    { "id": 471, "op": "ADD", "parents": [470, 454] },
    { "id": 472, "op": "ADD", "parents": [471, 427] },
    { "id": 327, "op": "MULTIPLY", "base_id": 25, "multiplier": "x0" },
    { "id": 254, "op": "MULTIPLY", "base_id": 11, "multiplier": "x0", "pivot": 44 },
    { "id": 328, "op": "ADD", "parents": [327, 254] },
    { "id": 329, "op": "ADD", "parents": [328, 25] },
    { "id": 330, "op": "ADD", "parents": [329, 11], "pivot": 1 }
  ],
  "final_step": { "op": "ADD", "inputs": [472, 330], "instruction": "Compute the linear combination of the final inputs to derive 0 = 1." },
  "provenance": { "declared": false, "controls": {}, "undeclared": ["x1", "x3", "x4", "x5", "x13"], "limits": ["The declaration may be false: nothing here verifies that the system named as asserting a control is that system. It is bounded by custody, not proof: the source manifest is a reviewed artefact bound to a policy digest and carried on this certificate with its own hash, so a false declaration is a signed and attributable statement rather than an assumption.", "A resolver may launder an argument into a reading: returning a value taken from the model's arguments is the one thing a resolver cannot be checked for in general. It is bounded by the argument-invariance conformance test, which mutates the arguments with the systems of record held fixed and requires the readings not to move. That is a test and not a proof, and a resolver that passes it may still launder on an input the mutation did not reach.", "Detection is bounded, not proved: a detection-dependent obligation's bound is a union over rates measured on a stated corpus. A corpus unrepresentative of the traffic gives a number that is arithmetically correct and practically wrong, which is why the corpus, its size and the date it was measured travel with the bound."] },
  "control_integrity": { "checked": true, "clean": true, "findings": [] },
  "detection": { "computed": true, "dependent": false, "atoms": [], "bound": null, "uncalibrated": [] }
}