{
  "schemaVersion": 1,
  "evidenceType": "exhaustive abstract coding demonstration",
  "convention": "Three independent binary cells start at 000; only 0-to-1 changes are allowed.",
  "source": "https://people.csail.mit.edu/rivest/pubs/RS82c.pdf",
  "sourceLocation": "Table 1 and Lemma 1, printed page 3",
  "rows": [
    {
      "firstMessage": "00",
      "secondMessage": "00",
      "firstWord": "000",
      "secondWord": "000",
      "decodedSecond": "00",
      "monotone": true,
      "unchanged": true
    },
    {
      "firstMessage": "00",
      "secondMessage": "01",
      "firstWord": "000",
      "secondWord": "011",
      "decodedSecond": "01",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "00",
      "secondMessage": "10",
      "firstWord": "000",
      "secondWord": "101",
      "decodedSecond": "10",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "00",
      "secondMessage": "11",
      "firstWord": "000",
      "secondWord": "110",
      "decodedSecond": "11",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "01",
      "secondMessage": "00",
      "firstWord": "100",
      "secondWord": "111",
      "decodedSecond": "00",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "01",
      "secondMessage": "01",
      "firstWord": "100",
      "secondWord": "100",
      "decodedSecond": "01",
      "monotone": true,
      "unchanged": true
    },
    {
      "firstMessage": "01",
      "secondMessage": "10",
      "firstWord": "100",
      "secondWord": "101",
      "decodedSecond": "10",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "01",
      "secondMessage": "11",
      "firstWord": "100",
      "secondWord": "110",
      "decodedSecond": "11",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "10",
      "secondMessage": "00",
      "firstWord": "010",
      "secondWord": "111",
      "decodedSecond": "00",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "10",
      "secondMessage": "01",
      "firstWord": "010",
      "secondWord": "011",
      "decodedSecond": "01",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "10",
      "secondMessage": "10",
      "firstWord": "010",
      "secondWord": "010",
      "decodedSecond": "10",
      "monotone": true,
      "unchanged": true
    },
    {
      "firstMessage": "10",
      "secondMessage": "11",
      "firstWord": "010",
      "secondWord": "110",
      "decodedSecond": "11",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "11",
      "secondMessage": "00",
      "firstWord": "001",
      "secondWord": "111",
      "decodedSecond": "00",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "11",
      "secondMessage": "01",
      "firstWord": "001",
      "secondWord": "011",
      "decodedSecond": "01",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "11",
      "secondMessage": "10",
      "firstWord": "001",
      "secondWord": "101",
      "decodedSecond": "10",
      "monotone": true,
      "unchanged": false
    },
    {
      "firstMessage": "11",
      "secondMessage": "11",
      "firstWord": "001",
      "secondWord": "001",
      "decodedSecond": "11",
      "monotone": true,
      "unchanged": true
    }
  ],
  "summary": {
    "orderedPairs": 16,
    "validPairs": 16,
    "unchangedPairs": 4,
    "physicalBits": 3,
    "currentLogicalBits": 2,
    "logicalBitsWrittenAcrossTwoGenerations": 4,
    "simultaneousHistoryRecovery": false
  },
  "singleBitFaults": {
    "scope": "One bit is flipped after writing, in either direction, in every reachable state; not a physical error rate. The state-only decoder has no ECC or external integrity check.",
    "rows": [
      {
        "word": "000",
        "bitFromRight": 0,
        "corruptedWord": "001",
        "beforeMessage": "00",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "000",
        "bitFromRight": 1,
        "corruptedWord": "010",
        "beforeMessage": "00",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "000",
        "bitFromRight": 2,
        "corruptedWord": "100",
        "beforeMessage": "00",
        "decodedMessage": "01",
        "logicalValueChanged": true
      },
      {
        "word": "001",
        "bitFromRight": 0,
        "corruptedWord": "000",
        "beforeMessage": "11",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "001",
        "bitFromRight": 1,
        "corruptedWord": "011",
        "beforeMessage": "11",
        "decodedMessage": "01",
        "logicalValueChanged": true
      },
      {
        "word": "001",
        "bitFromRight": 2,
        "corruptedWord": "101",
        "beforeMessage": "11",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "010",
        "bitFromRight": 0,
        "corruptedWord": "011",
        "beforeMessage": "10",
        "decodedMessage": "01",
        "logicalValueChanged": true
      },
      {
        "word": "010",
        "bitFromRight": 1,
        "corruptedWord": "000",
        "beforeMessage": "10",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "010",
        "bitFromRight": 2,
        "corruptedWord": "110",
        "beforeMessage": "10",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "011",
        "bitFromRight": 0,
        "corruptedWord": "010",
        "beforeMessage": "01",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "011",
        "bitFromRight": 1,
        "corruptedWord": "001",
        "beforeMessage": "01",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "011",
        "bitFromRight": 2,
        "corruptedWord": "111",
        "beforeMessage": "01",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "100",
        "bitFromRight": 0,
        "corruptedWord": "101",
        "beforeMessage": "01",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "100",
        "bitFromRight": 1,
        "corruptedWord": "110",
        "beforeMessage": "01",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "100",
        "bitFromRight": 2,
        "corruptedWord": "000",
        "beforeMessage": "01",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "101",
        "bitFromRight": 0,
        "corruptedWord": "100",
        "beforeMessage": "10",
        "decodedMessage": "01",
        "logicalValueChanged": true
      },
      {
        "word": "101",
        "bitFromRight": 1,
        "corruptedWord": "111",
        "beforeMessage": "10",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "101",
        "bitFromRight": 2,
        "corruptedWord": "001",
        "beforeMessage": "10",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "110",
        "bitFromRight": 0,
        "corruptedWord": "111",
        "beforeMessage": "11",
        "decodedMessage": "00",
        "logicalValueChanged": true
      },
      {
        "word": "110",
        "bitFromRight": 1,
        "corruptedWord": "100",
        "beforeMessage": "11",
        "decodedMessage": "01",
        "logicalValueChanged": true
      },
      {
        "word": "110",
        "bitFromRight": 2,
        "corruptedWord": "010",
        "beforeMessage": "11",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "111",
        "bitFromRight": 0,
        "corruptedWord": "110",
        "beforeMessage": "00",
        "decodedMessage": "11",
        "logicalValueChanged": true
      },
      {
        "word": "111",
        "bitFromRight": 1,
        "corruptedWord": "101",
        "beforeMessage": "00",
        "decodedMessage": "10",
        "logicalValueChanged": true
      },
      {
        "word": "111",
        "bitFromRight": 2,
        "corruptedWord": "011",
        "beforeMessage": "00",
        "decodedMessage": "01",
        "logicalValueChanged": true
      }
    ],
    "summary": {
      "reachableStates": 8,
      "bitPositionsPerState": 3,
      "cases": 24,
      "wrongDecodedValues": 24
    }
  },
  "limits": [
    "Exact enumeration, not sampling: no confidence interval or workload frequency is inferred.",
    "No NAND timing, ECC, retention, program-order, energy or wear model.",
    "Two arbitrary messages are guaranteed; an arbitrary third message is not.",
    "Coding convention is not a NAND voltage-to-bit mapping."
  ],
  "modelSha256": "65f3ab97212e6990ce33b8aa4ec3bd915bc785ec842b7acab4e35653c55ab10b"
}
