{
  "certificate": {
    "certificate_type": "algebraic",
    "control_integrity": {
      "checked": true,
      "clean": true,
      "findings": []
    },
    "detail": "full",
    "detection": {
      "atoms": [],
      "bound": null,
      "computed": true,
      "dependent": false,
      "uncalibrated": []
    },
    "final_step": {
      "inputs": [
        472,
        330
      ],
      "instruction": "Compute the linear combination of the final inputs to derive 0 = 1.",
      "op": "ADD"
    },
    "format_version": 1,
    "operations": [
      {
        "equation": "x1 = 1",
        "id": 9,
        "named_equation": "$personal_recommendation = 1",
        "op": "INSERT",
        "pin": {
          "name": "personal_recommendation",
          "value": 1
        },
        "pivot": 2,
        "reads_as": "$personal_recommendation holds",
        "source": "original-S2"
      },
      {
        "base_id": 9,
        "id": 220,
        "multiplier": "x5",
        "op": "MULTIPLY"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 416
        },
        "equation": "x1*x5 + x7 + x6 = 0",
        "id": 12,
        "named_equation": "$personal_recommendation*$names_specific_product + x7 + x6 = 0",
        "op": "INSERT",
        "pivot": 59,
        "source": "original-S1"
      },
      {
        "id": 221,
        "op": "ADD",
        "parents": [
          220,
          12
        ],
        "pivot": 8
      },
      {
        "base_id": 221,
        "id": 422,
        "multiplier": "x0",
        "op": "MULTIPLY"
      },
      {
        "equation": "x0*x7 + x17 = 0",
        "id": 13,
        "named_equation": "ask mortgage advice*x7 + aux_17 = 0",
        "op": "INSERT",
        "pivot": 35,
        "source": "original-S1"
      },
      {
        "id": 423,
        "op": "ADD",
        "parents": [
          422,
          13
        ]
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 416
        },
        "equation": "x6 + x5 + x1 = 0",
        "id": 1,
        "named_equation": "x6 + $names_specific_product + $personal_recommendation = 0",
        "op": "INSERT",
        "pivot": 7,
        "source": "original-S2"
      },
      {
        "base_id": 1,
        "id": 26,
        "multiplier": "x0",
        "op": "MULTIPLY",
        "pivot": 34
      },
      {
        "id": 424,
        "op": "ADD",
        "parents": [
          423,
          26
        ]
      },
      {
        "equation": "x0*x1 + x18 = 0",
        "id": 14,
        "named_equation": "ask mortgage advice*$personal_recommendation + aux_18 = 0",
        "op": "INSERT",
        "pivot": 29,
        "source": "original-S1"
      },
      {
        "id": 425,
        "op": "ADD",
        "parents": [
          424,
          14
        ]
      },
      {
        "base_id": 9,
        "id": 215,
        "multiplier": "x0",
        "op": "MULTIPLY"
      },
      {
        "id": 216,
        "op": "ADD",
        "parents": [
          215,
          14
        ],
        "pivot": 19
      },
      {
        "id": 426,
        "op": "ADD",
        "parents": [
          425,
          216
        ]
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 417
        },
        "equation": "x9 = 1",
        "id": 2,
        "named_equation": "x9 = 1",
        "op": "INSERT",
        "pivot": 10,
        "reads_as": "x9 holds",
        "source": "original-S2"
      },
      {
        "base_id": 2,
        "id": 68,
        "multiplier": "x17",
        "op": "MULTIPLY"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 417
        },
        "equation": "x9*x17 + x10 = 0",
        "id": 15,
        "named_equation": "x9*aux_17 + x10 = 0",
        "op": "INSERT",
        "pivot": 243,
        "source": "original-S1"
      },
      {
        "id": 69,
        "op": "ADD",
        "parents": [
          68,
          15
        ],
        "pivot": 18
      },
      {
        "id": 427,
        "op": "ADD",
        "parents": [
          426,
          69
        ],
        "pivot": 11
      },
      {
        "base_id": 427,
        "id": 465,
        "multiplier": "x11",
        "op": "MULTIPLY"
      },
      {
        "equation": "x3*x18 + x19 + x18 = 0",
        "id": 17,
        "named_equation": "$suitability_assessment_done*aux_18 + aux_19 + aux_18 = 0",
        "op": "INSERT",
        "source": "original-S1"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 424
        },
        "equation": "x3*x18 + x18 + x11 + x10 = 0",
        "id": 16,
        "named_equation": "$suitability_assessment_done*aux_18 + aux_18 + x11 + x10 = 0",
        "op": "INSERT",
        "pivot": 121,
        "source": "original-S1"
      },
      {
        "id": 18,
        "op": "ADD",
        "parents": [
          17,
          16
        ],
        "pivot": 20
      },
      {
        "base_id": 18,
        "id": 284,
        "multiplier": "x10",
        "op": "MULTIPLY"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 424
        },
        "equation": "x10*x19 + x12 + x11 = 0",
        "id": 19,
        "named_equation": "x10*aux_19 + x12 + x11 = 0",
        "op": "INSERT",
        "pivot": 262,
        "source": "original-S1"
      },
      {
        "id": 285,
        "op": "ADD",
        "parents": [
          284,
          19
        ],
        "pivot": 254
      },
      {
        "id": 466,
        "op": "ADD",
        "parents": [
          465,
          285
        ]
      },
      {
        "base_id": 216,
        "id": 391,
        "multiplier": "x11",
        "op": "MULTIPLY"
      },
      {
        "base_id": 16,
        "id": 277,
        "multiplier": "x18",
        "op": "MULTIPLY",
        "pivot": 277
      },
      {
        "id": 392,
        "op": "ADD",
        "parents": [
          391,
          277
        ]
      },
      {
        "base_id": 216,
        "id": 390,
        "multiplier": "x10",
        "op": "MULTIPLY",
        "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
        ]
      },
      {
        "base_id": 69,
        "id": 333,
        "multiplier": "x0",
        "op": "MULTIPLY"
      },
      {
        "base_id": 13,
        "id": 272,
        "multiplier": "x0",
        "op": "MULTIPLY",
        "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
        ]
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 435
        },
        "equation": "x0*x15 + x16 + x0 = 0",
        "id": 25,
        "named_equation": "ask mortgage advice*x15 + respond with permitted mortgage answer + ask mortgage advice = 0",
        "op": "INSERT",
        "pivot": 43,
        "source": "original-S1"
      },
      {
        "base_id": 25,
        "id": 331,
        "multiplier": "x15",
        "op": "MULTIPLY"
      },
      {
        "equation": "x16 = 1",
        "id": 11,
        "named_equation": "respond with permitted mortgage answer = 1",
        "op": "INSERT",
        "pin": {
          "name": "respond with permitted mortgage answer",
          "value": 1
        },
        "pivot": 17,
        "reads_as": "respond with permitted mortgage answer holds",
        "source": "original-S2"
      },
      {
        "base_id": 11,
        "id": 265,
        "multiplier": "x15",
        "op": "MULTIPLY",
        "pivot": 329
      },
      {
        "id": 332,
        "op": "ADD",
        "parents": [
          331,
          265
        ],
        "pivot": 16
      },
      {
        "base_id": 332,
        "id": 452,
        "multiplier": "x12",
        "op": "MULTIPLY"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 428
        },
        "equation": "x12*x21 + x15 + x14 = 0",
        "id": 24,
        "named_equation": "x12*aux_21 + x15 + x14 = 0",
        "op": "INSERT",
        "pivot": 295,
        "source": "original-S1"
      },
      {
        "base_id": 24,
        "id": 322,
        "multiplier": "x12",
        "op": "MULTIPLY"
      },
      {
        "id": 323,
        "op": "ADD",
        "parents": [
          322,
          24
        ],
        "pivot": 289
      },
      {
        "id": 453,
        "op": "ADD",
        "parents": [
          452,
          323
        ]
      },
      {
        "equation": "x18*x20 + x21 = 0",
        "id": 22,
        "named_equation": "aux_18*aux_20 + aux_21 = 0",
        "op": "INSERT",
        "source": "original-S1"
      },
      {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 428
        },
        "equation": "x18*x20 + x14 + x12 = 0",
        "id": 21,
        "named_equation": "aux_18*aux_20 + x14 + x12 = 0",
        "op": "INSERT",
        "pivot": 363,
        "source": "original-S1"
      },
      {
        "id": 23,
        "op": "ADD",
        "parents": [
          22,
          21
        ],
        "pivot": 22
      },
      {
        "base_id": 23,
        "id": 314,
        "multiplier": "x12",
        "op": "MULTIPLY"
      },
      {
        "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
        ]
      },
      {
        "base_id": 25,
        "id": 327,
        "multiplier": "x0",
        "op": "MULTIPLY"
      },
      {
        "base_id": 11,
        "id": 254,
        "multiplier": "x0",
        "op": "MULTIPLY",
        "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
      }
    ],
    "origin_class": "derived",
    "policy": {
      "file": "policy.co",
      "parse_diagnostics": 0,
      "sha256": "470bfaea5ca9297edde3c6f9dd1287ac090b0db94091edd9bf067c4d63c22ec5",
      "unroll_depth": []
    },
    "provenance": {
      "controls": {},
      "declared": false,
      "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."
      ],
      "undeclared": [
        "x1",
        "x3",
        "x4",
        "x5",
        "x13"
      ]
    },
    "question": {
      "action": "respond with permitted mortgage answer",
      "obligation_context": "has_mortgage_permission",
      "pins": [
        {
          "name": "respond with permitted mortgage answer",
          "source": "action",
          "value": 1,
          "variable": 16
        },
        {
          "name": "has_mortgage_permission",
          "source": "obligation",
          "value": 0,
          "variable": 8
        },
        {
          "name": "personal_recommendation",
          "source": "conditioning",
          "value": 1,
          "variable": 1
        }
      ]
    },
    "self_contained": true,
    "status": "verified_unsat",
    "steps_to_contradiction": 64,
    "variables": {
      "x0": {
        "colang": {
          "file": "policy.co",
          "line": 133
        },
        "kind": "intent",
        "name": "ask mortgage advice"
      },
      "x1": {
        "colang": {
          "file": "policy.co",
          "flow": "investment specific product",
          "line": 209
        },
        "kind": "context",
        "name": "personal_recommendation"
      },
      "x10": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 417
        },
        "definition": "x10 + x9*x17 = 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.",
        "kind": "gate",
        "named_definition": "x10 + x9*aux_17 = 0",
        "subkind": "quadratic-split"
      },
      "x11": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 424
        },
        "definition": "x11 + x3*x18 + x10 + x18 = 0",
        "derived_from": [
          "x3",
          "x10",
          "x18"
        ],
        "kind": "gate",
        "named_definition": "x11 + $suitability_assessment_done*aux_18 + x10 + aux_18 = 0"
      },
      "x12": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 424
        },
        "definition": "x12 + x10*x19 + x11 = 0",
        "derived_from": [
          "x10",
          "x11",
          "x19"
        ],
        "kind": "gate",
        "named_definition": "x12 + x10*aux_19 + x11 = 0"
      },
      "x13": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 426
        },
        "kind": "context",
        "name": "vulnerability_identified"
      },
      "x14": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 428
        },
        "definition": "x14 + x12 + x18*x20 = 0",
        "derived_from": [
          "x12",
          "x18",
          "x20"
        ],
        "kind": "gate",
        "named_definition": "x14 + x12 + aux_18*aux_20 = 0"
      },
      "x15": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 428
        },
        "definition": "x15 + x12*x21 + x14 = 0",
        "derived_from": [
          "x12",
          "x14",
          "x21"
        ],
        "kind": "gate",
        "named_definition": "x15 + x12*aux_21 + x14 = 0"
      },
      "x16": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 435
        },
        "definition": "x16 + x0 + x0*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.",
        "kind": "action",
        "name": "respond with permitted mortgage answer",
        "named_definition": "respond with permitted mortgage answer + ask mortgage advice + ask mortgage advice*x15 = 0",
        "subkind": "forced-materialisation"
      },
      "x17": {
        "definition": "x17 + x0*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.",
        "kind": "aux",
        "named_definition": "aux_17 + ask mortgage advice*x7 = 0",
        "subkind": "degree3-materialisation"
      },
      "x18": {
        "definition": "x18 + x0*x1 = 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.",
        "kind": "aux",
        "named_definition": "aux_18 + ask mortgage advice*$personal_recommendation = 0",
        "subkind": "degree3-materialisation"
      },
      "x19": {
        "definition": "x19 + x3*x18 + x18 = 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.",
        "kind": "aux",
        "named_definition": "aux_19 + $suitability_assessment_done*aux_18 + aux_18 = 0",
        "subkind": "degree3-materialisation"
      },
      "x20": {
        "definition": "x20 + x4*x13 + x13 = 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.",
        "kind": "aux",
        "named_definition": "aux_20 + $fair_value_assessed*$vulnerability_identified + $vulnerability_identified = 0",
        "subkind": "degree3-materialisation"
      },
      "x21": {
        "definition": "x21 + x18*x20 = 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.",
        "kind": "aux",
        "named_definition": "aux_21 + aux_18*aux_20 = 0",
        "subkind": "degree3-materialisation"
      },
      "x3": {
        "colang": {
          "file": "policy.co",
          "flow": "investment specific product",
          "line": 229
        },
        "kind": "context",
        "name": "suitability_assessment_done"
      },
      "x4": {
        "colang": {
          "file": "policy.co",
          "flow": "investment specific product",
          "line": 233
        },
        "kind": "context",
        "name": "fair_value_assessed"
      },
      "x5": {
        "colang": {
          "file": "policy.co",
          "flow": "investment generic advice",
          "line": 247
        },
        "kind": "context",
        "name": "names_specific_product"
      },
      "x6": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 416
        },
        "definition": "x6 + x1 + x5 = 0",
        "derived_from": [
          "x1",
          "x5"
        ],
        "kind": "gate",
        "named_definition": "x6 + $personal_recommendation + $names_specific_product = 0"
      },
      "x7": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 416
        },
        "definition": "x7 + x1*x5 + x6 = 0",
        "derived_from": [
          "x1",
          "x5",
          "x6"
        ],
        "kind": "gate",
        "named_definition": "x7 + $personal_recommendation*$names_specific_product + x6 = 0"
      },
      "x9": {
        "colang": {
          "file": "policy.co",
          "flow": "mortgage gate",
          "line": 417
        },
        "definition": "x9 = 1",
        "kind": "gate",
        "named_definition": "x9 = 1"
      }
    }
  },
  "certificate_detail": "full",
  "decided_by": "candidate-derivation",
  "oracle_dependent": false,
  "origin_class": "derived",
  "status": "UNSAT"
}
