{
  "body_content_embedded": false,
  "concept_count": 223,
  "concepts": [
    {
      "concept_code": "addition",
      "concept_id": "ttp.concept.addition",
      "coverage_relation_ids": [
        "ttp.r014.relation.0188",
        "ttp.r014.relation.0335",
        "ttp.r014.relation.0582",
        "ttp.r014.relation.0585",
        "ttp.r014.relation.0638",
        "ttp.r014.relation.0645",
        "ttp.r014.relation.0722",
        "ttp.r014.relation.0885",
        "ttp.r014.relation.0890",
        "ttp.r014.relation.0905",
        "ttp.r014.relation.0957",
        "ttp.r014.relation.0961",
        "ttp.r014.relation.1306",
        "ttp.r014.relation.1350",
        "ttp.r014.relation.1354",
        "ttp.r014.relation.1361",
        "ttp.r014.relation.1366",
        "ttp.r014.relation.1369",
        "ttp.r014.relation.1373",
        "ttp.r014.relation.1403"
      ],
      "name_en": "addition",
      "name_id": "penjumlahan",
      "native_object_sha256": "41a1e32e136c77d45c19ab65bd38dd9e54a674e2f8dc25374f44fbf9247522d0",
      "prerequisite_concept_ids": [
        "ttp.concept.integer"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/addition",
      "term_ids": [
        "ttp.r014.term.036"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.sec.dada.exercise.06",
        "ttp.r014.unit.sec.gcd.discussion.03",
        "ttp.r014.unit.sec.gcd.theorem.invariance",
        "ttp.r014.unit.sec.gcd.exercise.06",
        "ttp.r014.unit.sec.gcd.exercise.08",
        "ttp.r014.unit.lem.gcdafterdivision.proof",
        "ttp.r014.unit.thm.basiccongprops",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.eg.congarith",
        "ttp.r014.unit.sec.itc.exercise.04",
        "ttp.r014.unit.sec.itc.exercise.05",
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.sec.awtwwc.discussion.03",
        "ttp.r014.unit.def.congruence-class-operations",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.thm.plustimeswelldefined.proof",
        "ttp.r014.unit.sec.awtwwc.discussion.04",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.sec.awtwwc.exercise.01"
      ]
    },
    {
      "concept_code": "additive_inverse",
      "concept_id": "ttp.concept.additive_inverse",
      "coverage_relation_ids": [
        "ttp.r014.relation.0194",
        "ttp.r014.relation.1379",
        "ttp.r014.relation.1406"
      ],
      "name_en": "additive inverse",
      "name_id": "invers aditif",
      "native_object_sha256": "ee234c39a947925bd091d5a4b8b7e965743875e9700bbb50fa799a3932e0e3af",
      "prerequisite_concept_ids": [
        "ttp.concept.addition",
        "ttp.concept.identity_element"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/additive_inverse",
      "term_ids": [
        "ttp.r014.term.042"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.sec.awtwwc.exercise.01"
      ]
    },
    {
      "concept_code": "ascii",
      "concept_id": "ttp.concept.ascii",
      "coverage_relation_ids": [
        "ttp.r014.relation.2696",
        "ttp.r014.relation.2726",
        "ttp.r014.relation.2756",
        "ttp.r014.relation.2786"
      ],
      "name_en": "ASCII",
      "name_id": "ASCII",
      "native_object_sha256": "01de3e8e89e2a17f68b0168ae3366a4a9a6de7d14ef9a2b7dfb37900bb7ed627",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/ascii",
      "term_ids": [
        "ttp.r014.term.178"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "associativity",
      "concept_id": "ttp.concept.associativity",
      "coverage_relation_ids": [
        "ttp.r014.relation.0191",
        "ttp.r014.relation.1376"
      ],
      "name_en": "associativity",
      "name_id": "asosiativitas",
      "native_object_sha256": "cdb577b90a10a155ab821bc4a327c3788af018670404f3063d86c74ff857ff43",
      "prerequisite_concept_ids": [
        "ttp.concept.binary_operation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/associativity",
      "term_ids": [
        "ttp.r014.term.039"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties"
      ]
    },
    {
      "concept_code": "asymmetric_cipher",
      "concept_id": "ttp.concept.asymmetric_cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2672",
        "ttp.r014.relation.2702",
        "ttp.r014.relation.2732",
        "ttp.r014.relation.2762"
      ],
      "name_en": "asymmetric cipher / cryptosystem / encryption",
      "name_id": "cipher / kriptosistem / enkripsi asimetris",
      "native_object_sha256": "ca03c32c6a3d3fe918f49d52428ae409b3c1c915bb2766c925cc7adff350bb0a",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/asymmetric_cipher",
      "term_ids": [
        "ttp.r014.term.154"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "authentication",
      "concept_id": "ttp.concept.authentication",
      "coverage_relation_ids": [
        "ttp.r014.relation.2514",
        "ttp.r014.relation.2533",
        "ttp.r014.relation.2552",
        "ttp.r014.relation.2571"
      ],
      "name_en": "authentication",
      "name_id": "autentikasi",
      "native_object_sha256": "3362f1495236cb5decaa011eb8d618e139e544fa1287844cdc637668838630dc",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/authentication",
      "term_ids": [
        "ttp.r014.term.119"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "base",
      "concept_id": "ttp.concept.base",
      "coverage_relation_ids": [
        "ttp.r014.relation.0387",
        "ttp.r014.relation.0389",
        "ttp.r014.relation.0393",
        "ttp.r014.relation.0398",
        "ttp.r014.relation.0404",
        "ttp.r014.relation.0413",
        "ttp.r014.relation.0420",
        "ttp.r014.relation.0424",
        "ttp.r014.relation.0429"
      ],
      "name_en": "base",
      "name_id": "basis",
      "native_object_sha256": "4bae7e6a71e40b853eb140697dc302b5a073fe84f1834b530f53cabcf601d7f1",
      "prerequisite_concept_ids": [
        "ttp.concept.integer"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-RoIiDB",
      "taxonomy_path": "mathematics/number-theory/base",
      "term_ids": [
        "ttp.r014.term.055"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.roiidb",
        "ttp.r014.unit.sec.roiidb.discussion.01",
        "ttp.r014.unit.thm.basebexpansion",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.eg.changebase",
        "ttp.r014.unit.sec.roiidb.exercise.01",
        "ttp.r014.unit.sec.roiidb.exercise.02"
      ]
    },
    {
      "concept_code": "base_representation",
      "concept_id": "ttp.concept.base_representation",
      "coverage_relation_ids": [
        "ttp.r014.relation.0388",
        "ttp.r014.relation.0390",
        "ttp.r014.relation.0394",
        "ttp.r014.relation.0399",
        "ttp.r014.relation.0405",
        "ttp.r014.relation.0414",
        "ttp.r014.relation.0421",
        "ttp.r014.relation.0425",
        "ttp.r014.relation.0430",
        "ttp.r014.relation.0435",
        "ttp.r014.relation.0438",
        "ttp.r014.relation.0441"
      ],
      "name_en": "base-b representation",
      "name_id": "representasi basis b",
      "native_object_sha256": "7cf6dc90a86fb2cba918e1c0f6471320dd639bf41473915e23ad1fa103f69f2b",
      "prerequisite_concept_ids": [
        "ttp.concept.base",
        "ttp.concept.natural_number",
        "ttp.concept.division_algorithm"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-RoIiDB",
      "taxonomy_path": "mathematics/number-theory/base_representation",
      "term_ids": [
        "ttp.r014.term.056"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.roiidb",
        "ttp.r014.unit.sec.roiidb.discussion.01",
        "ttp.r014.unit.thm.basebexpansion",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.eg.changebase",
        "ttp.r014.unit.sec.roiidb.exercise.01",
        "ttp.r014.unit.sec.roiidb.exercise.02",
        "ttp.r014.unit.sec.roiidb.exercise.03",
        "ttp.r014.unit.sec.roiidb.exercise.04",
        "ttp.r014.unit.sec.roiidb.exercise.05"
      ]
    },
    {
      "concept_code": "bijective",
      "concept_id": "ttp.concept.bijective",
      "coverage_relation_ids": [
        "ttp.r014.relation.1508"
      ],
      "name_en": "bijective",
      "name_id": "bijektif",
      "native_object_sha256": "3f2fdb3fde2bcf717a6a5c51de97a4966f9158701966b6d480238a61d7ab8fde",
      "prerequisite_concept_ids": [
        "ttp.concept.injective",
        "ttp.concept.surjective"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#thm-phiismultiplicative",
      "taxonomy_path": "mathematics/number-theory/bijective",
      "term_ids": [
        "ttp.r014.term.095"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "binary_operation",
      "concept_id": "ttp.concept.binary_operation",
      "coverage_relation_ids": [
        "ttp.r014.relation.0187",
        "ttp.r014.relation.1357"
      ],
      "name_en": "binary operation",
      "name_id": "operasi biner",
      "native_object_sha256": "aca65b491cd041095e7b629bc03c26dd8de0ae268d463cba7972dfe1ca9d4ae0",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/binary_operation",
      "term_ids": [
        "ttp.r014.term.035"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.def.congruence-class-operations"
      ]
    },
    {
      "concept_code": "binary_representation",
      "concept_id": "ttp.concept.binary_representation",
      "coverage_relation_ids": [
        "ttp.r014.relation.0407",
        "ttp.r014.relation.0436",
        "ttp.r014.relation.0443"
      ],
      "name_en": "binary representation",
      "name_id": "representasi biner",
      "native_object_sha256": "3e9ab03af4e6490d097c96cf79feb4a348d3128bcc469be64d8a0688c6a634a1",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/binary_representation",
      "term_ids": [
        "ttp.r014.term.058"
      ],
      "unit_ids": [
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.sec.roiidb.exercise.03",
        "ttp.r014.unit.sec.roiidb.exercise.05"
      ]
    },
    {
      "concept_code": "bit",
      "concept_id": "ttp.concept.bit",
      "coverage_relation_ids": [
        "ttp.r014.relation.0408"
      ],
      "name_en": "bit / binary digit",
      "name_id": "bit / digit biner",
      "native_object_sha256": "66c2402f076f08e901e5acac064bff3e8b1ccc6ca2feeeded3f62997c1a99492",
      "prerequisite_concept_ids": [
        "ttp.concept.binary_representation",
        "ttp.concept.digit"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/bit",
      "term_ids": [
        "ttp.r014.term.064"
      ],
      "unit_ids": [
        "ttp.r014.unit.def.baseb"
      ]
    },
    {
      "concept_code": "brute_force_attack",
      "concept_id": "ttp.concept.brute_force_attack",
      "coverage_relation_ids": [
        "ttp.r014.relation.2620",
        "ttp.r014.relation.2633",
        "ttp.r014.relation.2646",
        "ttp.r014.relation.2659"
      ],
      "name_en": "brute-force attack",
      "name_id": "serangan brute force",
      "native_object_sha256": "07b137bf64aef41176f5cc7be88d04c2c23e34adda8bd5cfd6f4b6f839ca92a4",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/brute_force_attack",
      "term_ids": [
        "ttp.r014.term.141"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "caesar_cipher",
      "concept_id": "ttp.concept.caesar_cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2582",
        "ttp.r014.relation.2591",
        "ttp.r014.relation.2600",
        "ttp.r014.relation.2609"
      ],
      "name_en": "Caesar cipher",
      "name_id": "cipher Caesar",
      "native_object_sha256": "06a9a09d0c98683d73b1ed536c9c59756109c4f3a3ecf500818fd059ae17f6b8",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/caesar_cipher",
      "term_ids": [
        "ttp.r014.term.130"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "caesar_cracker",
      "concept_id": "ttp.concept.caesar_cracker",
      "coverage_relation_ids": [
        "ttp.r014.relation.2627",
        "ttp.r014.relation.2640",
        "ttp.r014.relation.2653",
        "ttp.r014.relation.2666"
      ],
      "name_en": "Caesar cracker",
      "name_id": "pemecah Caesar",
      "native_object_sha256": "412ea67447ec7e392ffb4f0b05b5a95a6dc789271a5d5caedc459d87b9eb6489",
      "prerequisite_concept_ids": [
        "ttp.concept.caesar_cipher",
        "ttp.concept.total_square_error"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/caesar_cracker",
      "term_ids": [
        "ttp.r014.term.148"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "cardinality",
      "concept_id": "ttp.concept.cardinality",
      "coverage_relation_ids": [
        "ttp.r014.relation.1472",
        "ttp.r014.relation.1481",
        "ttp.r014.relation.1504"
      ],
      "name_en": "cardinality",
      "name_id": "kardinalitas",
      "native_object_sha256": "cebbf66a3551c0dd1ef3904084992ee67e8fd61f01086930c6e4f8fe910145c5",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-EphiF",
      "taxonomy_path": "mathematics/number-theory/cardinality",
      "term_ids": [
        "ttp.r014.term.091"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.def.euler-phi",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "cartesian_product",
      "concept_id": "ttp.concept.cartesian_product",
      "coverage_relation_ids": [
        "ttp.r014.relation.1505"
      ],
      "name_en": "Cartesian product",
      "name_id": "hasil kali Kartesius",
      "native_object_sha256": "e33fbbfd470e69e752bd0c28fcac2e303172fbfb321eafe03b64c83ea5a56cda",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#thm-phiismultiplicative",
      "taxonomy_path": "mathematics/number-theory/cartesian_product",
      "term_ids": [
        "ttp.r014.term.092"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "certificate_authority",
      "concept_id": "ttp.concept.certificate_authority",
      "coverage_relation_ids": [
        "ttp.r014.relation.2841"
      ],
      "name_en": "certificate authority (CA)",
      "name_id": "otoritas sertifikat (CA)",
      "native_object_sha256": "c0bb943a03d60a8bf570676de0c4be86bb5db8a53f91b4f25fc9bf66f3019202",
      "prerequisite_concept_ids": [
        "ttp.concept.digital_signature",
        "ttp.concept.identity_key_binding"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/certificate_authority",
      "term_ids": [
        "ttp.r014.term.201"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "certification_path",
      "concept_id": "ttp.concept.certification_path",
      "coverage_relation_ids": [
        "ttp.r014.relation.2844"
      ],
      "name_en": "certification path / certificate chain",
      "name_id": "jalur sertifikasi / rantai sertifikat",
      "native_object_sha256": "cd25ece0c6dd4aa787ab00b30cd01834b1b87c22a2199147abcc4b2c6a66f0bd",
      "prerequisite_concept_ids": [
        "ttp.concept.digital_certificate",
        "ttp.concept.trust_anchor"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/certification_path",
      "term_ids": [
        "ttp.r014.term.204"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "challenge_distribution",
      "concept_id": "ttp.concept.challenge_distribution",
      "coverage_relation_ids": [
        "ttp.r014.relation.2804",
        "ttp.r014.relation.2820",
        "ttp.r014.relation.2836"
      ],
      "name_en": "challenge distribution",
      "name_id": "distribusi tantangan",
      "native_object_sha256": "b82c4af7fa3c8e157181c1343749211b5dacf8540ed73d4ee28dca0abaac5853",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/challenge_distribution",
      "term_ids": [
        "ttp.r014.term.196"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "change_of_base_formula",
      "concept_id": "ttp.concept.change_of_base_formula",
      "coverage_relation_ids": [
        "ttp.r014.relation.2922",
        "ttp.r014.relation.2925",
        "ttp.r014.relation.2928",
        "ttp.r014.relation.2931"
      ],
      "name_en": "change-of-base formula",
      "name_id": "rumus perubahan basis",
      "native_object_sha256": "c11a52d40a2b0ace8e5fe16682d7ba2898484ff87e3459c57ded66e6e10a87db",
      "prerequisite_concept_ids": [
        "ttp.concept.index_relative",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-I",
      "taxonomy_path": "mathematics/number-theory/change_of_base_formula",
      "term_ids": [
        "ttp.r014.term.223"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.indices",
        "ttp.r014.unit.sec.indices.exercise.01",
        "ttp.r014.unit.sec.indices.exercise.02",
        "ttp.r014.unit.sec.indices.exercise.03"
      ]
    },
    {
      "concept_code": "chinese_remainder_theorem",
      "concept_id": "ttp.concept.chinese_remainder_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.0863",
        "ttp.r014.relation.0867",
        "ttp.r014.relation.1166",
        "ttp.r014.relation.1175",
        "ttp.r014.relation.1176",
        "ttp.r014.relation.1183",
        "ttp.r014.relation.1193",
        "ttp.r014.relation.1198",
        "ttp.r014.relation.1200",
        "ttp.r014.relation.1204",
        "ttp.r014.relation.1207",
        "ttp.r014.relation.1210",
        "ttp.r014.relation.1409",
        "ttp.r014.relation.1476",
        "ttp.r014.relation.1510"
      ],
      "name_en": "Chinese Remainder Theorem",
      "name_id": "Teorema Sisa Cina",
      "native_object_sha256": "a79642b9ec808c6972d7b50783cd966350a8fd5ba03a4c51904a6138be159889",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.modulo",
        "ttp.concept.pairwise_relatively_prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#chap-Cs",
      "taxonomy_path": "mathematics/number-theory/chinese_remainder_theorem",
      "term_ids": [
        "ttp.r014.term.075"
      ],
      "unit_ids": [
        "ttp.r014.unit.chap.cs",
        "ttp.r014.unit.chap.cs.discussion.01",
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.sec.crt.discussion.01",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.eg.systemofcongs",
        "ttp.r014.unit.sec.crt.exercises",
        "ttp.r014.unit.sec.crt.exercise.01",
        "ttp.r014.unit.sec.crt.exercise.02",
        "ttp.r014.unit.sec.crt.exercise.03",
        "ttp.r014.unit.sec.crt.exercise.04",
        "ttp.r014.unit.sec.awtwwc.exercise.02",
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "cipher",
      "concept_id": "ttp.concept.cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2517",
        "ttp.r014.relation.2536",
        "ttp.r014.relation.2555",
        "ttp.r014.relation.2574"
      ],
      "name_en": "cipher",
      "name_id": "cipher / algoritme sandi",
      "native_object_sha256": "1ef096f5efbe03488d2c2ecd60140f74757b1074d1331e79f302019d26976de6",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/cipher",
      "term_ids": [
        "ttp.r014.term.122"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "ciphertext",
      "concept_id": "ttp.concept.ciphertext",
      "coverage_relation_ids": [
        "ttp.r014.relation.2518",
        "ttp.r014.relation.2537",
        "ttp.r014.relation.2556",
        "ttp.r014.relation.2575"
      ],
      "name_en": "ciphertext",
      "name_id": "cipherteks / teks sandi",
      "native_object_sha256": "4ae550044fff49d18b2ab48ef16687f73d00059db01485d9702e475f2aadbde9",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/ciphertext",
      "term_ids": [
        "ttp.r014.term.123"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "class_representative",
      "concept_id": "ttp.concept.class_representative",
      "coverage_relation_ids": [
        "ttp.r014.relation.1301",
        "ttp.r014.relation.1314",
        "ttp.r014.relation.1324",
        "ttp.r014.relation.1336",
        "ttp.r014.relation.1339",
        "ttp.r014.relation.1345"
      ],
      "name_en": "class representative",
      "name_id": "wakil kelas ekuivalensi",
      "native_object_sha256": "f2cb70ab95c2eca9a32f03dafa49da55784791160a3dee456847964756df6bdb",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_class"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/class_representative",
      "term_ids": [
        "ttp.r014.term.086",
        "ttp.r014.term.098"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.eg.rationals",
        "ttp.r014.unit.def.integers-mod-n",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof"
      ]
    },
    {
      "concept_code": "collision",
      "concept_id": "ttp.concept.collision",
      "coverage_relation_ids": [
        "ttp.r014.relation.2798",
        "ttp.r014.relation.2814",
        "ttp.r014.relation.2830"
      ],
      "name_en": "collision",
      "name_id": "tumbukan",
      "native_object_sha256": "6734f05321b1face32da7f51ab0dc34908280105b0ba0cbeb1f3fa25fc51e046",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/collision",
      "term_ids": [
        "ttp.r014.term.190"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "collision_resistance",
      "concept_id": "ttp.concept.collision_resistance",
      "coverage_relation_ids": [
        "ttp.r014.relation.2797",
        "ttp.r014.relation.2813",
        "ttp.r014.relation.2829"
      ],
      "name_en": "collision resistance",
      "name_id": "ketahanan tumbukan",
      "native_object_sha256": "9390429072d60768ebb8b0017f7cbddb43183113b6fcdead06259072b61add18",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/collision_resistance",
      "term_ids": [
        "ttp.r014.term.189"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "common_divisor",
      "concept_id": "ttp.concept.common_divisor",
      "coverage_relation_ids": [
        "ttp.r014.relation.0551",
        "ttp.r014.relation.0555",
        "ttp.r014.relation.0558",
        "ttp.r014.relation.0563",
        "ttp.r014.relation.0570",
        "ttp.r014.relation.0577",
        "ttp.r014.relation.0589",
        "ttp.r014.relation.0612",
        "ttp.r014.relation.0628",
        "ttp.r014.relation.0630",
        "ttp.r014.relation.0632",
        "ttp.r014.relation.0648"
      ],
      "name_en": "common divisor",
      "name_id": "pembagi bersama",
      "native_object_sha256": "9d7ef4242656272998e1c6cf12e3b13bffb96609af1b4bc05b4de29e520b6a94",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility",
        "ttp.concept.divisor"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#gcd",
      "taxonomy_path": "mathematics/number-theory/common_divisor",
      "term_ids": [
        "ttp.r014.term.066"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gcd",
        "ttp.r014.unit.sec.gcd.discussion.01",
        "ttp.r014.unit.sec.gcd.definition.greatest-common-divisor",
        "ttp.r014.unit.eg.gcda",
        "ttp.r014.unit.sec.gcd.discussion.02",
        "ttp.r014.unit.thm.dividebygcd.proof",
        "ttp.r014.unit.sec.gcd.theorem.invariance.proof",
        "ttp.r014.unit.sec.gcd.definition.gcd-family",
        "ttp.r014.unit.sec.gcd.exercise.01",
        "ttp.r014.unit.sec.gcd.exercise.02",
        "ttp.r014.unit.sec.gcd.exercise.03",
        "ttp.r014.unit.sec.gcd.exercise.09"
      ]
    },
    {
      "concept_code": "commutativity",
      "concept_id": "ttp.concept.commutativity",
      "coverage_relation_ids": [
        "ttp.r014.relation.0190",
        "ttp.r014.relation.1375"
      ],
      "name_en": "commutativity",
      "name_id": "komutativitas",
      "native_object_sha256": "701c92fd4591416d6b3602c1b85b2e7c146661762b5b3e9b247ae055c49f5078",
      "prerequisite_concept_ids": [
        "ttp.concept.binary_operation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/commutativity",
      "term_ids": [
        "ttp.r014.term.038"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties"
      ]
    },
    {
      "concept_code": "composite",
      "concept_id": "ttp.concept.composite",
      "coverage_relation_ids": [
        "ttp.r014.relation.2453",
        "ttp.r014.relation.2459",
        "ttp.r014.relation.2465",
        "ttp.r014.relation.2471"
      ],
      "name_en": "composite number",
      "name_id": "bilangan komposit",
      "native_object_sha256": "93697b6cdf28ec98912814034e77b34bb502b71f531fc2b2627082983114d789",
      "prerequisite_concept_ids": [
        "ttp.concept.prime",
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/composite",
      "term_ids": [
        "ttp.r014.term.100"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "computational_complexity",
      "concept_id": "ttp.concept.computational_complexity",
      "coverage_relation_ids": [
        "ttp.r014.relation.2589",
        "ttp.r014.relation.2598",
        "ttp.r014.relation.2607",
        "ttp.r014.relation.2616"
      ],
      "name_en": "computational complexity",
      "name_id": "kompleksitas komputasi",
      "native_object_sha256": "022218b6d8dd114bf2c514b63796f84e615ce250dc723719c418909988dc6ca2",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/computational_complexity",
      "term_ids": [
        "ttp.r014.term.137"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "confidentiality",
      "concept_id": "ttp.concept.confidentiality",
      "coverage_relation_ids": [
        "ttp.r014.relation.2512",
        "ttp.r014.relation.2531",
        "ttp.r014.relation.2550",
        "ttp.r014.relation.2569"
      ],
      "name_en": "confidentiality",
      "name_id": "kerahasiaan",
      "native_object_sha256": "171e14a056999f17f76e5b5e14a4fb9696e4d56dd524a542fc362301be63de05",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/confidentiality",
      "term_ids": [
        "ttp.r014.term.117"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "congruence",
      "concept_id": "ttp.concept.congruence",
      "coverage_relation_ids": [
        "ttp.r014.relation.0861",
        "ttp.r014.relation.0865",
        "ttp.r014.relation.0868",
        "ttp.r014.relation.0873",
        "ttp.r014.relation.0874",
        "ttp.r014.relation.0879",
        "ttp.r014.relation.0882",
        "ttp.r014.relation.0883",
        "ttp.r014.relation.0888",
        "ttp.r014.relation.0903",
        "ttp.r014.relation.0918",
        "ttp.r014.relation.0920",
        "ttp.r014.relation.0925",
        "ttp.r014.relation.0930",
        "ttp.r014.relation.0934",
        "ttp.r014.relation.0939",
        "ttp.r014.relation.0945",
        "ttp.r014.relation.0947",
        "ttp.r014.relation.0951",
        "ttp.r014.relation.0954",
        "ttp.r014.relation.0958",
        "ttp.r014.relation.1046",
        "ttp.r014.relation.1052",
        "ttp.r014.relation.1055",
        "ttp.r014.relation.1061",
        "ttp.r014.relation.1096",
        "ttp.r014.relation.1106",
        "ttp.r014.relation.1116",
        "ttp.r014.relation.1121",
        "ttp.r014.relation.1168",
        "ttp.r014.relation.1173",
        "ttp.r014.relation.1178",
        "ttp.r014.relation.1304",
        "ttp.r014.relation.1325",
        "ttp.r014.relation.1328",
        "ttp.r014.relation.1363",
        "ttp.r014.relation.1368",
        "ttp.r014.relation.1415"
      ],
      "name_en": "congruence",
      "name_id": "kongruensi",
      "native_object_sha256": "e4dcbf9f3b2e497d3b0220ba85baa4f5ee8eecec3983665320cb5e01ff7f6fd9",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility",
        "ttp.concept.integer"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#chap-Cs",
      "taxonomy_path": "mathematics/number-theory/congruence",
      "term_ids": [
        "ttp.r014.term.072"
      ],
      "unit_ids": [
        "ttp.r014.unit.chap.cs",
        "ttp.r014.unit.chap.cs.discussion.01",
        "ttp.r014.unit.sec.itc",
        "ttp.r014.unit.sec.itc.discussion.01",
        "ttp.r014.unit.def.congruence",
        "ttp.r014.unit.eg.congruences",
        "ttp.r014.unit.sec.itc.discussion.02",
        "ttp.r014.unit.thm.basiccongprops",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.eg.congarith",
        "ttp.r014.unit.sec.itc.discussion.05",
        "ttp.r014.unit.thm.congcanc",
        "ttp.r014.unit.thm.congcanc.proof",
        "ttp.r014.unit.eg.solvcongs",
        "ttp.r014.unit.thm.numzerosmodafactor",
        "ttp.r014.unit.thm.numzerosmodafactor.proof",
        "ttp.r014.unit.sec.itc.exercise.01",
        "ttp.r014.unit.sec.itc.exercise.02",
        "ttp.r014.unit.sec.itc.exercise.03",
        "ttp.r014.unit.sec.itc.exercise.04",
        "ttp.r014.unit.sec.itc.exercise.05",
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.sec.lc.discussion.01",
        "ttp.r014.unit.def.linearcongruence",
        "ttp.r014.unit.thm.linearcongruencesameclass",
        "ttp.r014.unit.def.modularinverse",
        "ttp.r014.unit.eg.modinverses",
        "ttp.r014.unit.sec.lc.exercise.02",
        "ttp.r014.unit.sec.lc.exercise.04",
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.sec.crt.discussion.01",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.sec.awtwwc.discussion.02",
        "ttp.r014.unit.prop.congruence-equivalence-relation",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.thm.plustimeswelldefined.proof",
        "ttp.r014.unit.sec.awtwwc.exercise.04"
      ]
    },
    {
      "concept_code": "congruence_class",
      "concept_id": "ttp.concept.congruence_class",
      "coverage_relation_ids": [
        "ttp.r014.relation.0864",
        "ttp.r014.relation.0870",
        "ttp.r014.relation.0933",
        "ttp.r014.relation.0935",
        "ttp.r014.relation.0940",
        "ttp.r014.relation.1051",
        "ttp.r014.relation.1059",
        "ttp.r014.relation.1063",
        "ttp.r014.relation.1075",
        "ttp.r014.relation.1080",
        "ttp.r014.relation.1086",
        "ttp.r014.relation.1089",
        "ttp.r014.relation.1101",
        "ttp.r014.relation.1104",
        "ttp.r014.relation.1112",
        "ttp.r014.relation.1181",
        "ttp.r014.relation.1305",
        "ttp.r014.relation.1327",
        "ttp.r014.relation.1334",
        "ttp.r014.relation.1338",
        "ttp.r014.relation.1344",
        "ttp.r014.relation.1353",
        "ttp.r014.relation.1389",
        "ttp.r014.relation.1393",
        "ttp.r014.relation.1398",
        "ttp.r014.relation.1411",
        "ttp.r014.relation.1416"
      ],
      "name_en": "congruence class",
      "name_id": "kelas kongruensi",
      "native_object_sha256": "e26c491087d20ff518b57ae6465d34c9fbf30bb526d18bc20705a4e489e91b6a",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.modulo"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#chap-Cs",
      "taxonomy_path": "mathematics/number-theory/congruence_class",
      "term_ids": [
        "ttp.r014.term.074"
      ],
      "unit_ids": [
        "ttp.r014.unit.chap.cs",
        "ttp.r014.unit.sec.itc",
        "ttp.r014.unit.sec.itc.discussion.06",
        "ttp.r014.unit.thm.numzerosmodafactor",
        "ttp.r014.unit.thm.numzerosmodafactor.proof",
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.sec.lc.discussion.02",
        "ttp.r014.unit.thm.linearcongruencesameclass",
        "ttp.r014.unit.thm.basiclincongs",
        "ttp.r014.unit.thm.basiclincongs.proof",
        "ttp.r014.unit.rem.uniqsolnlincong",
        "ttp.r014.unit.eg.multiplesolscongs",
        "ttp.r014.unit.sec.lc.discussion.06",
        "ttp.r014.unit.cor.modinv",
        "ttp.r014.unit.sec.lc.exercise.01",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.sec.awtwwc.discussion.02",
        "ttp.r014.unit.def.integers-mod-n",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof",
        "ttp.r014.unit.def.congruence-class-operations",
        "ttp.r014.unit.sec.awtwwc.discussion.05",
        "ttp.r014.unit.thm.linear-congruence-classes",
        "ttp.r014.unit.thm.linear-congruence-classes.proof",
        "ttp.r014.unit.sec.awtwwc.exercise.02",
        "ttp.r014.unit.sec.awtwwc.exercise.04"
      ]
    },
    {
      "concept_code": "coset",
      "concept_id": "ttp.concept.coset",
      "coverage_relation_ids": [
        "ttp.r014.relation.2483",
        "ttp.r014.relation.2487",
        "ttp.r014.relation.2491",
        "ttp.r014.relation.2495",
        "ttp.r014.relation.2499"
      ],
      "name_en": "coset",
      "name_id": "koset",
      "native_object_sha256": "4c68388593876e8aedeee895e1b423b8fec7cb2db25b9912e7a9a898eb501000",
      "prerequisite_concept_ids": [
        "ttp.concept.cyclic_subgroup"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-MOaA",
      "taxonomy_path": "mathematics/number-theory/coset",
      "term_ids": [
        "ttp.r014.term.112"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.moaa",
        "ttp.r014.unit.sec.moaa.exercise.01",
        "ttp.r014.unit.sec.moaa.exercise.02",
        "ttp.r014.unit.sec.moaa.exercise.03",
        "ttp.r014.unit.sec.moaa.exercise.04"
      ]
    },
    {
      "concept_code": "cryptanalysis",
      "concept_id": "ttp.concept.cryptanalysis",
      "coverage_relation_ids": [
        "ttp.r014.relation.2508",
        "ttp.r014.relation.2527",
        "ttp.r014.relation.2546",
        "ttp.r014.relation.2565"
      ],
      "name_en": "cryptanalysis",
      "name_id": "kriptanalisis",
      "native_object_sha256": "281ef88eb612ab8c193fa714df424a445b08049426ec0128e4061d3a5aae60ab",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "mathematics/number-theory/cryptanalysis",
      "term_ids": [
        "ttp.r014.term.010"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "cryptographic_hash_function",
      "concept_id": "ttp.concept.cryptographic_hash_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.2793",
        "ttp.r014.relation.2809",
        "ttp.r014.relation.2825"
      ],
      "name_en": "cryptographic hash function",
      "name_id": "fungsi hash kriptografis",
      "native_object_sha256": "b03cbae7b8462e9f354a965a0aaa398e75043a526fadade4d80ce02ce461c972",
      "prerequisite_concept_ids": [
        "ttp.concept.digital_signature"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/cryptographic_hash_function",
      "term_ids": [
        "ttp.r014.term.185"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "cryptographic_salt",
      "concept_id": "ttp.concept.cryptographic_salt",
      "coverage_relation_ids": [
        "ttp.r014.relation.2679",
        "ttp.r014.relation.2709",
        "ttp.r014.relation.2739",
        "ttp.r014.relation.2769"
      ],
      "name_en": "cryptographic salt",
      "name_id": "salt kriptografis",
      "native_object_sha256": "f2f7450404c01358d94aad5fff6871541a29ca7a3fe85d243a9d1615026fb241",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/cryptographic_salt",
      "term_ids": [
        "ttp.r014.term.161"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "cryptography",
      "concept_id": "ttp.concept.cryptography",
      "coverage_relation_ids": [
        "ttp.r014.relation.2507",
        "ttp.r014.relation.2526",
        "ttp.r014.relation.2545",
        "ttp.r014.relation.2564"
      ],
      "name_en": "cryptography",
      "name_id": "kriptografi",
      "native_object_sha256": "f7a7ea3c6d1db890ae7961211cae780f222d177cbd4afc2724ac3690a2c10a4d",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "mathematics/number-theory/cryptography",
      "term_ids": [
        "ttp.r014.term.009"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "cryptology",
      "concept_id": "ttp.concept.cryptology",
      "coverage_relation_ids": [
        "ttp.r014.relation.0131",
        "ttp.r014.relation.2506",
        "ttp.r014.relation.2525",
        "ttp.r014.relation.2544",
        "ttp.r014.relation.2563"
      ],
      "name_en": "cryptology",
      "name_id": "kriptologi",
      "native_object_sha256": "2187255634d0a491d606a96f7cb35095bf35ad18dfa7bd56f6ae69297a9d88f3",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "mathematics/number-theory/cryptology",
      "term_ids": [
        "ttp.r014.term.008"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes",
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "cryptosystem",
      "concept_id": "ttp.concept.cryptosystem",
      "coverage_relation_ids": [
        "ttp.r014.relation.0134",
        "ttp.r014.relation.2509",
        "ttp.r014.relation.2528",
        "ttp.r014.relation.2547",
        "ttp.r014.relation.2566"
      ],
      "name_en": "cryptosystem",
      "name_id": "kriptosistem",
      "native_object_sha256": "bc3be564be82a18a2cb9f0a151c67e11021434e547ee5997d1a233fe46320f15",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "mathematics/number-theory/cryptosystem",
      "term_ids": [
        "ttp.r014.term.011"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes",
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "cyclic_subgroup",
      "concept_id": "ttp.concept.cyclic_subgroup",
      "coverage_relation_ids": [
        "ttp.r014.relation.2482",
        "ttp.r014.relation.2486",
        "ttp.r014.relation.2490",
        "ttp.r014.relation.2494",
        "ttp.r014.relation.2498"
      ],
      "name_en": "cyclic subgroup generated by a",
      "name_id": "subgrup siklik yang dibangkitkan oleh a",
      "native_object_sha256": "6ebf58685a77b1d0eb9cd1dd160ff4972d0033139b277484b8ad3155ac12e04c",
      "prerequisite_concept_ids": [
        "ttp.concept.unit_group",
        "ttp.concept.multiplicative_order"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-MOaA",
      "taxonomy_path": "mathematics/number-theory/cyclic_subgroup",
      "term_ids": [
        "ttp.r014.term.111"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.moaa",
        "ttp.r014.unit.sec.moaa.exercise.01",
        "ttp.r014.unit.sec.moaa.exercise.02",
        "ttp.r014.unit.sec.moaa.exercise.03",
        "ttp.r014.unit.sec.moaa.exercise.04"
      ]
    },
    {
      "concept_code": "decimal",
      "concept_id": "ttp.concept.decimal",
      "coverage_relation_ids": [
        "ttp.r014.relation.0391",
        "ttp.r014.relation.0419",
        "ttp.r014.relation.0423",
        "ttp.r014.relation.0428",
        "ttp.r014.relation.0433",
        "ttp.r014.relation.0437",
        "ttp.r014.relation.0440"
      ],
      "name_en": "decimal",
      "name_id": "desimal",
      "native_object_sha256": "bea38b497ca880e740807ccd613908f476b89615433f3ec2d5a2d844ee0f4a21",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-basetwo",
      "taxonomy_path": "mathematics/number-theory/decimal",
      "term_ids": [
        "ttp.r014.term.059"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.roiidb.discussion.01",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.eg.changebase",
        "ttp.r014.unit.sec.roiidb.exercise.01",
        "ttp.r014.unit.sec.roiidb.exercise.02",
        "ttp.r014.unit.sec.roiidb.exercise.03",
        "ttp.r014.unit.sec.roiidb.exercise.04"
      ]
    },
    {
      "concept_code": "decryption",
      "concept_id": "ttp.concept.decryption",
      "coverage_relation_ids": [
        "ttp.r014.relation.2520",
        "ttp.r014.relation.2539",
        "ttp.r014.relation.2558",
        "ttp.r014.relation.2577"
      ],
      "name_en": "decryption",
      "name_id": "dekripsi",
      "native_object_sha256": "c13ae78e28db7c2662aa11a43bb359a4ac3c2d860e53f28be2a0ec7997cff51e",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/decryption",
      "term_ids": [
        "ttp.r014.term.125"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "decryption_keyspace",
      "concept_id": "ttp.concept.decryption_keyspace",
      "coverage_relation_ids": [
        "ttp.r014.relation.2675",
        "ttp.r014.relation.2705",
        "ttp.r014.relation.2735",
        "ttp.r014.relation.2765"
      ],
      "name_en": "decryption keyspace",
      "name_id": "ruang kunci dekripsi",
      "native_object_sha256": "b75fd812a29cbc50bb3fcb900ced9333385fd9100d07476bb1f64368179e13fa",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/decryption_keyspace",
      "term_ids": [
        "ttp.r014.term.157"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "dh_public_parameters",
      "concept_id": "ttp.concept.dh_public_parameters",
      "coverage_relation_ids": [
        "ttp.r014.relation.2937",
        "ttp.r014.relation.2943",
        "ttp.r014.relation.2949",
        "ttp.r014.relation.2955"
      ],
      "name_en": "Diffie--Hellman public parameters",
      "name_id": "parameter publik Diffie--Hellman",
      "native_object_sha256": "d264503f60993b1bdb8988b209ef1e4751f9244f69390e40cf69a4af1d933de4",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "computer-science/cryptography/dh_public_parameters",
      "term_ids": [
        "ttp.r014.term.229"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "dh_secret_exponent",
      "concept_id": "ttp.concept.dh_secret_exponent",
      "coverage_relation_ids": [
        "ttp.r014.relation.2933",
        "ttp.r014.relation.2939",
        "ttp.r014.relation.2945",
        "ttp.r014.relation.2951"
      ],
      "name_en": "Diffie--Hellman secret exponent",
      "name_id": "eksponen rahasia Diffie--Hellman",
      "native_object_sha256": "f4a204305afc55ef045fc3ba23eb2e5f5f3b9c8bdcc0a42f1eacecb4f33fa024",
      "prerequisite_concept_ids": [
        "ttp.concept.diffie_hellman_key_exchange",
        "ttp.concept.fresh_randomness"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "computer-science/cryptography/dh_secret_exponent",
      "term_ids": [
        "ttp.r014.term.225"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "diffie_hellman",
      "concept_id": "ttp.concept.diffie_hellman",
      "coverage_relation_ids": [
        "ttp.r014.relation.0137"
      ],
      "name_en": "Diffie-Hellman key exchange",
      "name_id": "pertukaran kunci Diffie-Hellman",
      "native_object_sha256": "d08eeca938509de77d6c304691779fbbb0c5e9e85eb4f54e0a6aba3447ee1f51",
      "prerequisite_concept_ids": [
        "ttp.concept.key_exchange"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/-catatan-rilis.html#catatan-rilis",
      "taxonomy_path": "mathematics/number-theory/diffie_hellman",
      "term_ids": [
        "ttp.r014.term.014"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes"
      ]
    },
    {
      "concept_code": "diffie_hellman_key_exchange",
      "concept_id": "ttp.concept.diffie_hellman_key_exchange",
      "coverage_relation_ids": [
        "ttp.r014.relation.2932",
        "ttp.r014.relation.2938",
        "ttp.r014.relation.2944",
        "ttp.r014.relation.2950"
      ],
      "name_en": "Diffie--Hellman key exchange (DHKE)",
      "name_id": "pertukaran kunci Diffie--Hellman (DHKE)",
      "native_object_sha256": "8e5f61281e64128e941bf3fe75bfcc9d0e6345a8d260c7d7425f06964d8ca4f1",
      "prerequisite_concept_ids": [
        "ttp.concept.primitive_root",
        "ttp.concept.discrete_logarithm_hardness"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "computer-science/cryptography/diffie_hellman_key_exchange",
      "term_ids": [
        "ttp.r014.term.224"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "diffie_hellman_problem",
      "concept_id": "ttp.concept.diffie_hellman_problem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2936",
        "ttp.r014.relation.2942",
        "ttp.r014.relation.2948",
        "ttp.r014.relation.2954"
      ],
      "name_en": "Diffie--Hellman problem (DHP)",
      "name_id": "masalah Diffie--Hellman (DHP)",
      "native_object_sha256": "2ac4fc683d0c2db2526d01ea958e89223ed3e95caa036c5c905884452719c000",
      "prerequisite_concept_ids": [
        "ttp.concept.diffie_hellman_key_exchange"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "computer-science/cryptography/diffie_hellman_problem",
      "term_ids": [
        "ttp.r014.term.228"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "digit",
      "concept_id": "ttp.concept.digit",
      "coverage_relation_ids": [
        "ttp.r014.relation.0395",
        "ttp.r014.relation.0400",
        "ttp.r014.relation.0406",
        "ttp.r014.relation.0415",
        "ttp.r014.relation.0422"
      ],
      "name_en": "digit",
      "name_id": "digit",
      "native_object_sha256": "10317d2c5bae2b021df6aa18695ae7dbc20c5c74633f7527a57cf98e14340c88",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-basebexpansion",
      "taxonomy_path": "mathematics/number-theory/digit",
      "term_ids": [
        "ttp.r014.term.057"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.basebexpansion",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.eg.changebase"
      ]
    },
    {
      "concept_code": "digital_certificate",
      "concept_id": "ttp.concept.digital_certificate",
      "coverage_relation_ids": [
        "ttp.r014.relation.2842"
      ],
      "name_en": "digital certificate",
      "name_id": "sertifikat digital",
      "native_object_sha256": "01908184274361acdec675754910352c76a34d15d089217e6bd6d670ef188e8f",
      "prerequisite_concept_ids": [
        "ttp.concept.certificate_authority",
        "ttp.concept.public_key"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/digital_certificate",
      "term_ids": [
        "ttp.r014.term.202"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "digital_signature",
      "concept_id": "ttp.concept.digital_signature",
      "coverage_relation_ids": [
        "ttp.r014.relation.2790",
        "ttp.r014.relation.2806",
        "ttp.r014.relation.2822"
      ],
      "name_en": "digital signature",
      "name_id": "tanda tangan digital",
      "native_object_sha256": "2c2ef1cd3e159d17dec9ca15b0c976d68b892a046e9a3ce3150f73dcd6bb690a",
      "prerequisite_concept_ids": [
        "ttp.concept.public_key_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/digital_signature",
      "term_ids": [
        "ttp.r014.term.182"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "diophantine_equation",
      "concept_id": "ttp.concept.diophantine_equation",
      "coverage_relation_ids": [
        "ttp.r014.relation.1049",
        "ttp.r014.relation.1064",
        "ttp.r014.relation.1066",
        "ttp.r014.relation.1069"
      ],
      "name_en": "Diophantine equation",
      "name_id": "persamaan Diofantin",
      "native_object_sha256": "ab8322fd311b90b7843cad57842c946f4d23635e92444efd771c980bb28a4c3f",
      "prerequisite_concept_ids": [
        "ttp.concept.integer"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-LC",
      "taxonomy_path": "mathematics/number-theory/diophantine_equation",
      "term_ids": [
        "ttp.r014.term.078"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.sec.lc.discussion.03",
        "ttp.r014.unit.def.diophantine",
        "ttp.r014.unit.sec.lc.discussion.04"
      ]
    },
    {
      "concept_code": "discrete_logarithm",
      "concept_id": "ttp.concept.discrete_logarithm",
      "coverage_relation_ids": [
        "ttp.r014.relation.2693",
        "ttp.r014.relation.2723",
        "ttp.r014.relation.2753",
        "ttp.r014.relation.2783",
        "ttp.r014.relation.2996"
      ],
      "name_en": "discrete logarithm",
      "name_id": "logaritma diskret",
      "native_object_sha256": "9bcb307c1aca2b67948d6ba6889f7d15f0f2a2ea965dc50ff537abae62a06c6c",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/discrete_logarithm",
      "term_ids": [
        "ttp.r014.term.175"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03",
        "ttp.r014.unit.id-id.chap.ieqdl"
      ]
    },
    {
      "concept_code": "discrete_logarithm_hardness",
      "concept_id": "ttp.concept.discrete_logarithm_hardness",
      "coverage_relation_ids": [
        "ttp.r014.relation.2921",
        "ttp.r014.relation.2924",
        "ttp.r014.relation.2927",
        "ttp.r014.relation.2930"
      ],
      "name_en": "discrete-logarithm hardness",
      "name_id": "kesulitan komputasional logaritma diskret",
      "native_object_sha256": "b18ce2032a42c1115cba21e7e5bf89bbf28ef0d10729e294d8182e612bc9fd9c",
      "prerequisite_concept_ids": [
        "ttp.concept.discrete_logarithm",
        "ttp.concept.input_length"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-I",
      "taxonomy_path": "computer-science/cryptography/discrete_logarithm_hardness",
      "term_ids": [
        "ttp.r014.term.222"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.indices",
        "ttp.r014.unit.sec.indices.exercise.01",
        "ttp.r014.unit.sec.indices.exercise.02",
        "ttp.r014.unit.sec.indices.exercise.03"
      ]
    },
    {
      "concept_code": "distributivity",
      "concept_id": "ttp.concept.distributivity",
      "coverage_relation_ids": [
        "ttp.r014.relation.0192",
        "ttp.r014.relation.1377"
      ],
      "name_en": "distributivity",
      "name_id": "distributivitas",
      "native_object_sha256": "52488bc2dc529d3cb3a58e4803527b9ecf85ebd34d35230acce34913861b8531",
      "prerequisite_concept_ids": [
        "ttp.concept.addition",
        "ttp.concept.multiplication"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/distributivity",
      "term_ids": [
        "ttp.r014.term.040"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties"
      ]
    },
    {
      "concept_code": "divisibility",
      "concept_id": "ttp.concept.divisibility",
      "coverage_relation_ids": [
        "ttp.r014.relation.0289",
        "ttp.r014.relation.0291",
        "ttp.r014.relation.0295",
        "ttp.r014.relation.0296",
        "ttp.r014.relation.0300",
        "ttp.r014.relation.0301",
        "ttp.r014.relation.0302",
        "ttp.r014.relation.0303",
        "ttp.r014.relation.0304",
        "ttp.r014.relation.0305",
        "ttp.r014.relation.0306",
        "ttp.r014.relation.0308",
        "ttp.r014.relation.0310",
        "ttp.r014.relation.0312",
        "ttp.r014.relation.0320",
        "ttp.r014.relation.0324",
        "ttp.r014.relation.0331",
        "ttp.r014.relation.0333",
        "ttp.r014.relation.0338",
        "ttp.r014.relation.0341",
        "ttp.r014.relation.0342",
        "ttp.r014.relation.0559",
        "ttp.r014.relation.0574",
        "ttp.r014.relation.0579",
        "ttp.r014.relation.0590",
        "ttp.r014.relation.0605",
        "ttp.r014.relation.0764",
        "ttp.r014.relation.0862",
        "ttp.r014.relation.0866",
        "ttp.r014.relation.0871",
        "ttp.r014.relation.0876",
        "ttp.r014.relation.0889",
        "ttp.r014.relation.0894",
        "ttp.r014.relation.0896",
        "ttp.r014.relation.0899",
        "ttp.r014.relation.0909",
        "ttp.r014.relation.0911",
        "ttp.r014.relation.0915",
        "ttp.r014.relation.0926",
        "ttp.r014.relation.0937",
        "ttp.r014.relation.0953",
        "ttp.r014.relation.1074",
        "ttp.r014.relation.1079",
        "ttp.r014.relation.1190",
        "ttp.r014.relation.1203",
        "ttp.r014.relation.1213"
      ],
      "name_en": "divisibility",
      "name_id": "keterbagian",
      "native_object_sha256": "9c57786e09472dc4709c40c49b779d81084388ae18a3d1efafd39d4f77cdcf74",
      "prerequisite_concept_ids": [
        "ttp.concept.integer",
        "ttp.concept.multiplication"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-divisibility",
      "taxonomy_path": "mathematics/number-theory/divisibility",
      "term_ids": [
        "ttp.r014.term.046"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.discussion.01",
        "ttp.r014.unit.sec.dada.definition.divisibility",
        "ttp.r014.unit.sec.dada.example.basic",
        "ttp.r014.unit.sec.dada.definition.parity",
        "ttp.r014.unit.sec.dada.proposition.zero",
        "ttp.r014.unit.sec.dada.proposition.size",
        "ttp.r014.unit.sec.dada.proposition.absolute-value",
        "ttp.r014.unit.sec.dada.theorem.transitivity",
        "ttp.r014.unit.sec.dada.theorem.transitivity.proof",
        "ttp.r014.unit.eg.divisibility",
        "ttp.r014.unit.sec.dada.discussion.linear-combination",
        "ttp.r014.unit.thm.divisibilitylincombs",
        "ttp.r014.unit.thm.divisibilitylincombs.proof",
        "ttp.r014.unit.sec.dada.discussion.finite-combination",
        "ttp.r014.unit.thm.the-da.proof",
        "ttp.r014.unit.sec.dada.exercise.01",
        "ttp.r014.unit.sec.dada.exercise.04",
        "ttp.r014.unit.sec.dada.exercise.05",
        "ttp.r014.unit.sec.dada.exercise.08",
        "ttp.r014.unit.sec.dada.exercise.11",
        "ttp.r014.unit.sec.dada.exercise.12",
        "ttp.r014.unit.sec.gcd.definition.greatest-common-divisor",
        "ttp.r014.unit.thm.dividebygcd",
        "ttp.r014.unit.thm.dividebygcd.proof",
        "ttp.r014.unit.sec.gcd.theorem.invariance.proof",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.sec.ea.exercise.04",
        "ttp.r014.unit.chap.cs",
        "ttp.r014.unit.chap.cs.discussion.01",
        "ttp.r014.unit.sec.itc",
        "ttp.r014.unit.def.congruence",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.sec.itc.discussion.03",
        "ttp.r014.unit.thm.combing",
        "ttp.r014.unit.thm.combing.proof",
        "ttp.r014.unit.sec.itc.discussion.04",
        "ttp.r014.unit.lem.euclids",
        "ttp.r014.unit.lem.euclids.proof",
        "ttp.r014.unit.thm.congcanc.proof",
        "ttp.r014.unit.thm.numzerosmodafactor",
        "ttp.r014.unit.sec.itc.exercise.03",
        "ttp.r014.unit.thm.basiclincongs",
        "ttp.r014.unit.thm.basiclincongs.proof",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.sec.crt.exercise.01",
        "ttp.r014.unit.sec.crt.exercise.04"
      ]
    },
    {
      "concept_code": "division",
      "concept_id": "ttp.concept.division",
      "coverage_relation_ids": [
        "ttp.r014.relation.0197",
        "ttp.r014.relation.0767",
        "ttp.r014.relation.0919",
        "ttp.r014.relation.0924",
        "ttp.r014.relation.0929",
        "ttp.r014.relation.1394"
      ],
      "name_en": "division",
      "name_id": "pembagian",
      "native_object_sha256": "0cb8717e2795f3cd0e0e6016a34a0fd4c0d056414a8d7f99cbb8207fb519216d",
      "prerequisite_concept_ids": [
        "ttp.concept.multiplication"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/division",
      "term_ids": [
        "ttp.r014.term.045"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.sec.ea.exercise.05",
        "ttp.r014.unit.sec.itc.discussion.05",
        "ttp.r014.unit.thm.congcanc",
        "ttp.r014.unit.thm.congcanc.proof",
        "ttp.r014.unit.thm.linear-congruence-classes"
      ]
    },
    {
      "concept_code": "division_algorithm",
      "concept_id": "ttp.concept.division_algorithm",
      "coverage_relation_ids": [
        "ttp.r014.relation.0299",
        "ttp.r014.relation.0315",
        "ttp.r014.relation.0318",
        "ttp.r014.relation.0321",
        "ttp.r014.relation.0325",
        "ttp.r014.relation.0328",
        "ttp.r014.relation.0396",
        "ttp.r014.relation.0401",
        "ttp.r014.relation.0416",
        "ttp.r014.relation.0426",
        "ttp.r014.relation.0431",
        "ttp.r014.relation.0602",
        "ttp.r014.relation.0713",
        "ttp.r014.relation.0718",
        "ttp.r014.relation.0727",
        "ttp.r014.relation.0730",
        "ttp.r014.relation.0737",
        "ttp.r014.relation.0752",
        "ttp.r014.relation.0942",
        "ttp.r014.relation.1341",
        "ttp.r014.relation.1347"
      ],
      "name_en": "Division Algorithm",
      "name_id": "Algoritma Pembagian",
      "native_object_sha256": "152fbcd9157bf9df8f1d8c9f7dea1fe9373493b599563717e33bfcc662cc3160",
      "prerequisite_concept_ids": [
        "ttp.concept.integer",
        "ttp.concept.well_ordering_principle"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-theDA",
      "taxonomy_path": "mathematics/number-theory/division_algorithm",
      "term_ids": [
        "ttp.r014.term.052"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.discussion.parity",
        "ttp.r014.unit.thm.the-da",
        "ttp.r014.unit.thm.the-da.proof",
        "ttp.r014.unit.eg.arithmetic",
        "ttp.r014.unit.sec.dada.exercise.02",
        "ttp.r014.unit.sec.dada.exercise.03",
        "ttp.r014.unit.thm.basebexpansion",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.sec.roiidb.exercise.01",
        "ttp.r014.unit.sec.roiidb.exercise.02",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.sec.ea",
        "ttp.r014.unit.lem.gcdafterdivision",
        "ttp.r014.unit.sec.ea.discussion.02",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.eg.ea",
        "ttp.r014.unit.thm.numzerosmodafactor.proof",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof"
      ]
    },
    {
      "concept_code": "divisor",
      "concept_id": "ttp.concept.divisor",
      "coverage_relation_ids": [
        "ttp.r014.relation.0293",
        "ttp.r014.relation.0556",
        "ttp.r014.relation.0560",
        "ttp.r014.relation.0568",
        "ttp.r014.relation.0578"
      ],
      "name_en": "divisor",
      "name_id": "pembagi",
      "native_object_sha256": "33e15835f2ec7e608cd4921343488ac33e1b8f90ff91dc5f19b31f149c4d7f5b",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#keterbagian-bilangan-bulat",
      "taxonomy_path": "mathematics/number-theory/divisor",
      "term_ids": [
        "ttp.r014.term.048"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.definition.divisibility",
        "ttp.r014.unit.sec.gcd.discussion.01",
        "ttp.r014.unit.sec.gcd.definition.greatest-common-divisor",
        "ttp.r014.unit.sec.gcd.discussion.02",
        "ttp.r014.unit.thm.dividebygcd.proof"
      ]
    },
    {
      "concept_code": "divisor_sum_function",
      "concept_id": "ttp.concept.divisor_sum_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.2861",
        "ttp.r014.relation.2863"
      ],
      "name_en": "divisor-sum function F",
      "name_id": "fungsi jumlah pembagi F",
      "native_object_sha256": "a9246d37897d56c692e0e4490612da547102a2f4b7274a69d9bc2049883b76c2",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-aNDGToSoEF",
      "taxonomy_path": "mathematics/number-theory/divisor_sum_function",
      "term_ids": [
        "ttp.r014.term.213"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gauss-totient-sum",
        "ttp.r014.unit.sec.gauss-totient-sum.exercise.01"
      ]
    },
    {
      "concept_code": "elgamal",
      "concept_id": "ttp.concept.elgamal",
      "coverage_relation_ids": [
        "ttp.r014.relation.0138"
      ],
      "name_en": "ElGamal cryptosystem",
      "name_id": "kriptosistem ElGamal",
      "native_object_sha256": "6cad01a0d83983cb0538ea560b1fc745c96de85e0aa696cad148c3e8d09e14bc",
      "prerequisite_concept_ids": [
        "ttp.concept.cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/-catatan-rilis.html#catatan-rilis",
      "taxonomy_path": "mathematics/number-theory/elgamal",
      "term_ids": [
        "ttp.r014.term.015"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes"
      ]
    },
    {
      "concept_code": "elgamal_ciphertext",
      "concept_id": "ttp.concept.elgamal_ciphertext",
      "coverage_relation_ids": [
        "ttp.r014.relation.2960",
        "ttp.r014.relation.2970",
        "ttp.r014.relation.2980",
        "ttp.r014.relation.2990"
      ],
      "name_en": "ElGamal ciphertext",
      "name_id": "cipherteks ElGamal",
      "native_object_sha256": "97032a24bf50d9fe34073654015aaf7ccb940f0cf3ea4a55648da347839a09a7",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_ciphertext",
      "term_ids": [
        "ttp.r014.term.234"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_cryptosystem",
      "concept_id": "ttp.concept.elgamal_cryptosystem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2956",
        "ttp.r014.relation.2966",
        "ttp.r014.relation.2976",
        "ttp.r014.relation.2986"
      ],
      "name_en": "ElGamal cryptosystem",
      "name_id": "kriptosistem ElGamal",
      "native_object_sha256": "11da8a371f6b85b87d512f2403e34ddeefc1d7d46c71f570f1e6c42bfb3b5b76",
      "prerequisite_concept_ids": [
        "ttp.concept.primitive_root",
        "ttp.concept.discrete_logarithm_hardness",
        "ttp.concept.public_key_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_cryptosystem",
      "term_ids": [
        "ttp.r014.term.230"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_ephemeral_exponent",
      "concept_id": "ttp.concept.elgamal_ephemeral_exponent",
      "coverage_relation_ids": [
        "ttp.r014.relation.2959",
        "ttp.r014.relation.2969",
        "ttp.r014.relation.2979",
        "ttp.r014.relation.2989"
      ],
      "name_en": "ElGamal ephemeral exponent",
      "name_id": "eksponen efemeral ElGamal",
      "native_object_sha256": "82866e3d16a6067a9395507d28d925c35ce19cd0ad5b3c66cdf4ce925660c8b9",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem",
        "ttp.concept.fresh_randomness"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_ephemeral_exponent",
      "term_ids": [
        "ttp.r014.term.233"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_private_key",
      "concept_id": "ttp.concept.elgamal_private_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2958",
        "ttp.r014.relation.2968",
        "ttp.r014.relation.2978",
        "ttp.r014.relation.2988"
      ],
      "name_en": "ElGamal private/decryption key",
      "name_id": "kunci privat/dekripsi ElGamal",
      "native_object_sha256": "455316c9649d56a8a0f2f4cbbf3eb50404899d1d57d4b427257fb649005d39c2",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_private_key",
      "term_ids": [
        "ttp.r014.term.232"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_public_key",
      "concept_id": "ttp.concept.elgamal_public_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2957",
        "ttp.r014.relation.2967",
        "ttp.r014.relation.2977",
        "ttp.r014.relation.2987"
      ],
      "name_en": "ElGamal public/encryption key",
      "name_id": "kunci publik/enkripsi ElGamal",
      "native_object_sha256": "89e80ad42c5d8c8ecd87f950e80dfa5256cf709663a2dc8bc2c798d62ccec3a3",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_public_key",
      "term_ids": [
        "ttp.r014.term.231"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_signature",
      "concept_id": "ttp.concept.elgamal_signature",
      "coverage_relation_ids": [
        "ttp.r014.relation.2961",
        "ttp.r014.relation.2971",
        "ttp.r014.relation.2981",
        "ttp.r014.relation.2991"
      ],
      "name_en": "ElGamal digital signature",
      "name_id": "tanda tangan digital ElGamal",
      "native_object_sha256": "112f2a110fda51d25baddf88bbf72e190f17a2f1c8acdcc83bb2acee40f9a6f8",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem",
        "ttp.concept.digital_signature"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_signature",
      "term_ids": [
        "ttp.r014.term.235"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "elgamal_signature_nonce",
      "concept_id": "ttp.concept.elgamal_signature_nonce",
      "coverage_relation_ids": [
        "ttp.r014.relation.2962",
        "ttp.r014.relation.2972",
        "ttp.r014.relation.2982",
        "ttp.r014.relation.2992"
      ],
      "name_en": "ElGamal signature nonce",
      "name_id": "nonce tanda tangan ElGamal",
      "native_object_sha256": "64557019d83764edf3d87f436ffecd5b675657fb4cebc61986642ee47808455e",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_signature",
        "ttp.concept.fresh_randomness"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/elgamal_signature_nonce",
      "term_ids": [
        "ttp.r014.term.236"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "encryption",
      "concept_id": "ttp.concept.encryption",
      "coverage_relation_ids": [
        "ttp.r014.relation.2519",
        "ttp.r014.relation.2538",
        "ttp.r014.relation.2557",
        "ttp.r014.relation.2576"
      ],
      "name_en": "encryption",
      "name_id": "enkripsi",
      "native_object_sha256": "fc493827d474e631dc8ebc63d64960ba4b4c6d08e31004f7503baa95fd9bdc14",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/encryption",
      "term_ids": [
        "ttp.r014.term.124"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "encryption_keyspace",
      "concept_id": "ttp.concept.encryption_keyspace",
      "coverage_relation_ids": [
        "ttp.r014.relation.2674",
        "ttp.r014.relation.2704",
        "ttp.r014.relation.2734",
        "ttp.r014.relation.2764"
      ],
      "name_en": "encryption keyspace",
      "name_id": "ruang kunci enkripsi",
      "native_object_sha256": "58c4a2da123636d319be917875ab43b66afd97a3656979c0cb2a476ce0173614",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/encryption_keyspace",
      "term_ids": [
        "ttp.r014.term.156"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "equivalence_class",
      "concept_id": "ttp.concept.equivalence_class",
      "coverage_relation_ids": [
        "ttp.r014.relation.1300",
        "ttp.r014.relation.1313",
        "ttp.r014.relation.1316",
        "ttp.r014.relation.1321",
        "ttp.r014.relation.1323",
        "ttp.r014.relation.1360",
        "ttp.r014.relation.1400",
        "ttp.r014.relation.1402",
        "ttp.r014.relation.1414"
      ],
      "name_en": "equivalence class",
      "name_id": "kelas ekuivalensi",
      "native_object_sha256": "8fdf7a862fb37638c6606e7dfea48781c698e406199866f021751522daaeed5b",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_relation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/equivalence_class",
      "term_ids": [
        "ttp.r014.term.085"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal.proof",
        "ttp.r014.unit.eg.rationals",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.sec.awtwwc.exercises",
        "ttp.r014.unit.sec.awtwwc.exercise.01",
        "ttp.r014.unit.sec.awtwwc.exercise.03"
      ]
    },
    {
      "concept_code": "equivalence_relation",
      "concept_id": "ttp.concept.equivalence_relation",
      "coverage_relation_ids": [
        "ttp.r014.relation.1296",
        "ttp.r014.relation.1308",
        "ttp.r014.relation.1309",
        "ttp.r014.relation.1315",
        "ttp.r014.relation.1317",
        "ttp.r014.relation.1322",
        "ttp.r014.relation.1326",
        "ttp.r014.relation.1329",
        "ttp.r014.relation.1399",
        "ttp.r014.relation.1413"
      ],
      "name_en": "equivalence relation",
      "name_id": "relasi ekuivalensi",
      "native_object_sha256": "c643fec4f039d7bc52eb76fec3ea7b6804928aaa13e670c83a5c75f296d82092",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/equivalence_relation",
      "term_ids": [
        "ttp.r014.term.081"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.sec.awtwwc.discussion.01",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal.proof",
        "ttp.r014.unit.eg.rationals",
        "ttp.r014.unit.sec.awtwwc.discussion.02",
        "ttp.r014.unit.prop.congruence-equivalence-relation",
        "ttp.r014.unit.sec.awtwwc.exercises",
        "ttp.r014.unit.sec.awtwwc.exercise.03"
      ]
    },
    {
      "concept_code": "euclidean_algorithm",
      "concept_id": "ttp.concept.euclidean_algorithm",
      "coverage_relation_ids": [
        "ttp.r014.relation.0710",
        "ttp.r014.relation.0715",
        "ttp.r014.relation.0724",
        "ttp.r014.relation.0728",
        "ttp.r014.relation.0736",
        "ttp.r014.relation.0744",
        "ttp.r014.relation.0750",
        "ttp.r014.relation.0755",
        "ttp.r014.relation.0758",
        "ttp.r014.relation.0769",
        "ttp.r014.relation.1090"
      ],
      "name_en": "Euclidean algorithm",
      "name_id": "Algoritma Euklides",
      "native_object_sha256": "660550cc021d1e65e117ffc13822a836971c82dc3feffe0db80ae1bc542fdd96",
      "prerequisite_concept_ids": [
        "ttp.concept.greatest_common_divisor",
        "ttp.concept.division_algorithm",
        "ttp.concept.remainder"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-EA",
      "taxonomy_path": "mathematics/number-theory/euclidean_algorithm",
      "term_ids": [
        "ttp.r014.term.070"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ea",
        "ttp.r014.unit.sec.ea.discussion.01",
        "ttp.r014.unit.sec.ea.discussion.02",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.sec.ea.note.extended-algorithm",
        "ttp.r014.unit.eg.ea",
        "ttp.r014.unit.sec.ea.exercise.01",
        "ttp.r014.unit.sec.ea.exercise.02",
        "ttp.r014.unit.sec.ea.exercise.06",
        "ttp.r014.unit.eg.multiplesolscongs"
      ]
    },
    {
      "concept_code": "euclids_lemma",
      "concept_id": "ttp.concept.euclids_lemma",
      "coverage_relation_ids": [
        "ttp.r014.relation.0872",
        "ttp.r014.relation.0908",
        "ttp.r014.relation.0910",
        "ttp.r014.relation.0914",
        "ttp.r014.relation.0923",
        "ttp.r014.relation.0928"
      ],
      "name_en": "Euclid's Lemma",
      "name_id": "Lemma Euklides",
      "native_object_sha256": "86a7aad3c028f90a2cce3629c996bad8d0faad4dbac81e4665f96212aa869216",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility",
        "ttp.concept.greatest_common_divisor",
        "ttp.concept.relatively_prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-ItC",
      "taxonomy_path": "mathematics/number-theory/euclids_lemma",
      "term_ids": [
        "ttp.r014.term.076"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.itc",
        "ttp.r014.unit.sec.itc.discussion.04",
        "ttp.r014.unit.lem.euclids",
        "ttp.r014.unit.lem.euclids.proof",
        "ttp.r014.unit.thm.congcanc",
        "ttp.r014.unit.thm.congcanc.proof"
      ]
    },
    {
      "concept_code": "euler_phi_function",
      "concept_id": "ttp.concept.euler_phi_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.1470",
        "ttp.r014.relation.1477",
        "ttp.r014.relation.1479",
        "ttp.r014.relation.1484",
        "ttp.r014.relation.1488",
        "ttp.r014.relation.1492",
        "ttp.r014.relation.1495",
        "ttp.r014.relation.1498",
        "ttp.r014.relation.1502",
        "ttp.r014.relation.1516",
        "ttp.r014.relation.1517",
        "ttp.r014.relation.1519"
      ],
      "name_en": "Euler's phi function",
      "name_id": "fungsi phi Euler",
      "native_object_sha256": "b43e5fb31172208ffd77e7c41c593d594f7f6578312953c44f3c2a7bec7c543d",
      "prerequisite_concept_ids": [
        "ttp.concept.relatively_prime",
        "ttp.concept.natural_number"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-EphiF",
      "taxonomy_path": "mathematics/number-theory/euler_phi_function",
      "term_ids": [
        "ttp.r014.term.089"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.sec.ephif.discussion.01",
        "ttp.r014.unit.def.euler-phi",
        "ttp.r014.unit.sec.ephif.discussion.02",
        "ttp.r014.unit.thm.euler-phi-counts-units",
        "ttp.r014.unit.thm.euler-phi-counts-units.proof",
        "ttp.r014.unit.sec.ephif.discussion.03",
        "ttp.r014.unit.thm.phiismultiplicative",
        "ttp.r014.unit.thm.phiismultiplicative.proof",
        "ttp.r014.unit.sec.ephif.exercises",
        "ttp.r014.unit.sec.ephif.exercise.01",
        "ttp.r014.unit.sec.ephif.exercise.02"
      ]
    },
    {
      "concept_code": "euler_theorem",
      "concept_id": "ttp.concept.euler_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.0139"
      ],
      "name_en": "Euler's theorem",
      "name_id": "Teorema Euler",
      "native_object_sha256": "f547bfde1fe5d6c3a600c3a57a7637db246f805227834c80e8f84243014c433d",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/-catatan-rilis.html#catatan-rilis",
      "taxonomy_path": "mathematics/number-theory/euler_theorem",
      "term_ids": [
        "ttp.r014.term.016"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes"
      ]
    },
    {
      "concept_code": "euler_totient_function",
      "concept_id": "ttp.concept.euler_totient_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.1471",
        "ttp.r014.relation.1480"
      ],
      "name_en": "Euler's totient function",
      "name_id": "fungsi totient Euler",
      "native_object_sha256": "7d236ac8d80bcd3aea4e43f04bce3a1360d46c2b0de35d5c2062b840d88b12de",
      "prerequisite_concept_ids": [
        "ttp.concept.euler_phi_function"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-EphiF",
      "taxonomy_path": "mathematics/number-theory/euler_totient_function",
      "term_ids": [
        "ttp.r014.term.090"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.def.euler-phi"
      ]
    },
    {
      "concept_code": "eulers_theorem",
      "concept_id": "ttp.concept.eulers_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2500",
        "ttp.r014.relation.2503"
      ],
      "name_en": "Euler's Theorem",
      "name_id": "Teorema Euler",
      "native_object_sha256": "887c67f23a46bdae7404b12eec7b25fbde563ab1d326a784995d0fd37caa9e21",
      "prerequisite_concept_ids": [
        "ttp.concept.multiplicative_order",
        "ttp.concept.euler_phi_function"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-AAtFLaET",
      "taxonomy_path": "mathematics/number-theory/eulers_theorem",
      "term_ids": [
        "ttp.r014.term.113"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aatflaet",
        "ttp.r014.unit.sec.aatflaet.exercise.01"
      ]
    },
    {
      "concept_code": "exhaustive_search",
      "concept_id": "ttp.concept.exhaustive_search",
      "coverage_relation_ids": [
        "ttp.r014.relation.2621",
        "ttp.r014.relation.2634",
        "ttp.r014.relation.2647",
        "ttp.r014.relation.2660"
      ],
      "name_en": "exhaustive search",
      "name_id": "pencarian menyeluruh",
      "native_object_sha256": "a6ffe9ac6bd203eff6792ee2773ef95209e681f124e1829c14f871cb4a5dd824",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/exhaustive_search",
      "term_ids": [
        "ttp.r014.term.142"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "exponents_modulo_order",
      "concept_id": "ttp.concept.exponents_modulo_order",
      "coverage_relation_ids": [
        "ttp.r014.relation.2850",
        "ttp.r014.relation.2852",
        "ttp.r014.relation.2854",
        "ttp.r014.relation.2856",
        "ttp.r014.relation.2858"
      ],
      "name_en": "exponents modulo the multiplicative order",
      "name_id": "pangkat modulo orde multiplikatif",
      "native_object_sha256": "58fe5757cd3850f898293ba34a5d768a5dc945aa8c02fce94fd9ecaec9a4bf3c",
      "prerequisite_concept_ids": [
        "ttp.concept.multiplicative_order"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-MPoMO",
      "taxonomy_path": "mathematics/number-theory/exponents_modulo_order",
      "term_ids": [
        "ttp.r014.term.210"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.multiplicative-order-properties",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.01",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.02",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.03",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.04"
      ]
    },
    {
      "concept_code": "extended_euclidean_algorithm",
      "concept_id": "ttp.concept.extended_euclidean_algorithm",
      "coverage_relation_ids": [
        "ttp.r014.relation.0711",
        "ttp.r014.relation.0729",
        "ttp.r014.relation.0745",
        "ttp.r014.relation.0747",
        "ttp.r014.relation.0768"
      ],
      "name_en": "extended Euclidean algorithm",
      "name_id": "Algoritma Euklides diperluas",
      "native_object_sha256": "444e97be6970b4dbc450fe1afb65296250866670b7ac7a7d68deea35fb770bd0",
      "prerequisite_concept_ids": [
        "ttp.concept.euclidean_algorithm",
        "ttp.concept.linear_combination"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-EA",
      "taxonomy_path": "mathematics/number-theory/extended_euclidean_algorithm",
      "term_ids": [
        "ttp.r014.term.071"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ea",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.sec.ea.note.extended-algorithm",
        "ttp.r014.unit.sec.ea.discussion.03",
        "ttp.r014.unit.sec.ea.exercise.06"
      ]
    },
    {
      "concept_code": "factor",
      "concept_id": "ttp.concept.factor",
      "coverage_relation_ids": [
        "ttp.r014.relation.0292"
      ],
      "name_en": "factor",
      "name_id": "faktor",
      "native_object_sha256": "3c3ab5a31cf66c30eb2b7975096a8f5d0f037b82707b1d6dddfbc62dbc321f3f",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#keterbagian-bilangan-bulat",
      "taxonomy_path": "mathematics/number-theory/factor",
      "term_ids": [
        "ttp.r014.term.047"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.definition.divisibility"
      ]
    },
    {
      "concept_code": "factorial",
      "concept_id": "ttp.concept.factorial",
      "coverage_relation_ids": [
        "ttp.r014.relation.0160",
        "ttp.r014.relation.0175",
        "ttp.r014.relation.0177",
        "ttp.r014.relation.2478"
      ],
      "name_en": "factorial",
      "name_id": "faktorial",
      "native_object_sha256": "4dc56e6ca20927ea3a4085e79423f30897eb5da2f673c804c6aa74c9660e3503",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-inductionv1b",
      "taxonomy_path": "mathematics/number-theory/factorial",
      "term_ids": [
        "ttp.r014.term.107"
      ],
      "unit_ids": [
        "ttp.r014.unit.eg.inductionv1b",
        "ttp.r014.unit.sec.wopami.exercise.06",
        "ttp.r014.unit.sec.wopami.exercise.07",
        "ttp.r014.unit.sec.wt"
      ]
    },
    {
      "concept_code": "fast_modular_exponentiation",
      "concept_id": "ttp.concept.fast_modular_exponentiation",
      "coverage_relation_ids": [
        "ttp.r014.relation.2691",
        "ttp.r014.relation.2721",
        "ttp.r014.relation.2751",
        "ttp.r014.relation.2781"
      ],
      "name_en": "fast modular exponentiation",
      "name_id": "eksponensiasi modular cepat",
      "native_object_sha256": "318f77c3ec55e6d1c73a8bc19ccd6d05907f9a053e1def06605b1785ba0cdf7a",
      "prerequisite_concept_ids": [
        "ttp.concept.binary_representation",
        "ttp.concept.congruence"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/fast_modular_exponentiation",
      "term_ids": [
        "ttp.r014.term.173"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "feasible_computation",
      "concept_id": "ttp.concept.feasible_computation",
      "coverage_relation_ids": [
        "ttp.r014.relation.2688",
        "ttp.r014.relation.2718",
        "ttp.r014.relation.2748",
        "ttp.r014.relation.2778"
      ],
      "name_en": "feasible computation",
      "name_id": "komputasi layak",
      "native_object_sha256": "371319278dc65e7dc6277afb8cfdc8c61e4265b63b3ced73931d5ef241f3581b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/feasible_computation",
      "term_ids": [
        "ttp.r014.term.170"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "fermats_last_theorem",
      "concept_id": "ttp.concept.fermats_last_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2502",
        "ttp.r014.relation.2505"
      ],
      "name_en": "Fermat's Last Theorem",
      "name_id": "Teorema Terakhir Fermat",
      "native_object_sha256": "14d3c5689251d2aebe063cf15af48ad794a292dd2716b023547ad44e31db61c7",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-AAtFLaET",
      "taxonomy_path": "mathematics/number-theory/fermats_last_theorem",
      "term_ids": [
        "ttp.r014.term.115"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aatflaet",
        "ttp.r014.unit.sec.aatflaet.exercise.01"
      ]
    },
    {
      "concept_code": "fermats_little_theorem",
      "concept_id": "ttp.concept.fermats_little_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2501",
        "ttp.r014.relation.2504"
      ],
      "name_en": "Fermat's Little Theorem",
      "name_id": "Teorema Kecil Fermat",
      "native_object_sha256": "705aa17784fe4c5982cf4c7baeae9a97982c74b45c06eb4f8a7d346efb1cb62e",
      "prerequisite_concept_ids": [
        "ttp.concept.eulers_theorem",
        "ttp.concept.prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-AAtFLaET",
      "taxonomy_path": "mathematics/number-theory/fermats_little_theorem",
      "term_ids": [
        "ttp.r014.term.114"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aatflaet",
        "ttp.r014.unit.sec.aatflaet.exercise.01"
      ]
    },
    {
      "concept_code": "fingerprint",
      "concept_id": "ttp.concept.fingerprint",
      "coverage_relation_ids": [
        "ttp.r014.relation.2799",
        "ttp.r014.relation.2815",
        "ttp.r014.relation.2831"
      ],
      "name_en": "fingerprint",
      "name_id": "sidik jari",
      "native_object_sha256": "a1590f9debb154f9779a01904e4028eba5672c1413331079d43a2ab6126818eb",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/fingerprint",
      "term_ids": [
        "ttp.r014.term.191"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "finite_sum",
      "concept_id": "ttp.concept.finite_sum",
      "coverage_relation_ids": [
        "ttp.r014.relation.0158",
        "ttp.r014.relation.0167",
        "ttp.r014.relation.0169",
        "ttp.r014.relation.0171",
        "ttp.r014.relation.0173",
        "ttp.r014.relation.0956",
        "ttp.r014.relation.0960"
      ],
      "name_en": "finite sum",
      "name_id": "jumlah berhingga",
      "native_object_sha256": "300b116270677f12bd12c7cbff68b69e532c4dcea6824a705bb53cb9733595b7",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-inductionv1a",
      "taxonomy_path": "mathematics/number-theory/finite_sum",
      "term_ids": [],
      "unit_ids": [
        "ttp.r014.unit.eg.inductionv1a",
        "ttp.r014.unit.sec.wopami.exercise.02",
        "ttp.r014.unit.sec.wopami.exercise.03",
        "ttp.r014.unit.sec.wopami.exercise.04",
        "ttp.r014.unit.sec.wopami.exercise.05",
        "ttp.r014.unit.sec.itc.exercise.04",
        "ttp.r014.unit.sec.itc.exercise.05"
      ]
    },
    {
      "concept_code": "frequency_analysis",
      "concept_id": "ttp.concept.frequency_analysis",
      "coverage_relation_ids": [
        "ttp.r014.relation.2623",
        "ttp.r014.relation.2636",
        "ttp.r014.relation.2649",
        "ttp.r014.relation.2662"
      ],
      "name_en": "frequency analysis",
      "name_id": "analisis frekuensi",
      "native_object_sha256": "59047f6a3f195398008c94653525b23a4e6cf89acd05fd3f610fba28b778c969",
      "prerequisite_concept_ids": [
        "ttp.concept.letter_frequency",
        "ttp.concept.ciphertext"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/frequency_analysis",
      "term_ids": [
        "ttp.r014.term.144"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "fresh_randomness",
      "concept_id": "ttp.concept.fresh_randomness",
      "coverage_relation_ids": [
        "ttp.r014.relation.2965",
        "ttp.r014.relation.2975",
        "ttp.r014.relation.2985",
        "ttp.r014.relation.2995"
      ],
      "name_en": "fresh randomness",
      "name_id": "keacakan baru yang independen",
      "native_object_sha256": "ea256d6662b47f1be3e359c46fff4d6747b270cda15e5386b08005e1fa12738e",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/fresh_randomness",
      "term_ids": [
        "ttp.r014.term.239"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "functional_correctness",
      "concept_id": "ttp.concept.functional_correctness",
      "coverage_relation_ids": [
        "ttp.r014.relation.2963",
        "ttp.r014.relation.2973",
        "ttp.r014.relation.2983",
        "ttp.r014.relation.2993"
      ],
      "name_en": "functional correctness",
      "name_id": "kebenaran fungsional",
      "native_object_sha256": "8d36b7512808d88a5e2493be2118c056b189e380c29114196bf6740969fb463b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/functional_correctness",
      "term_ids": [
        "ttp.r014.term.237"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "fundamental_theorem_arithmetic",
      "concept_id": "ttp.concept.fundamental_theorem_arithmetic",
      "coverage_relation_ids": [
        "ttp.r014.relation.2455",
        "ttp.r014.relation.2461",
        "ttp.r014.relation.2467",
        "ttp.r014.relation.2473"
      ],
      "name_en": "Fundamental Theorem of Arithmetic",
      "name_id": "Teorema Dasar Aritmetika",
      "native_object_sha256": "48c4ee296b4c050a5b199a9029b1af42f124c30b8c44015269553b52fccd811d",
      "prerequisite_concept_ids": [
        "ttp.concept.prime_factorization",
        "ttp.concept.well_ordering_principle"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/fundamental_theorem_arithmetic",
      "term_ids": [
        "ttp.r014.term.102"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "gauss_totient_sum",
      "concept_id": "ttp.concept.gauss_totient_sum",
      "coverage_relation_ids": [
        "ttp.r014.relation.2860",
        "ttp.r014.relation.2862"
      ],
      "name_en": "Gauss's theorem on totient sums",
      "name_id": "Teorema Gauss tentang jumlah nilai fungsi phi Euler",
      "native_object_sha256": "7ca4dadc0100ecad8015836e966909f3ee10db217fb50cfbd0634ffaeb8faa98",
      "prerequisite_concept_ids": [
        "ttp.concept.euler_phi_function",
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-aNDGToSoEF",
      "taxonomy_path": "mathematics/number-theory/gauss_totient_sum",
      "term_ids": [
        "ttp.r014.term.212"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gauss-totient-sum",
        "ttp.r014.unit.sec.gauss-totient-sum.exercise.01"
      ]
    },
    {
      "concept_code": "greatest_common_divisor",
      "concept_id": "ttp.concept.greatest_common_divisor",
      "coverage_relation_ids": [
        "ttp.r014.relation.0550",
        "ttp.r014.relation.0554",
        "ttp.r014.relation.0557",
        "ttp.r014.relation.0562",
        "ttp.r014.relation.0565",
        "ttp.r014.relation.0567",
        "ttp.r014.relation.0569",
        "ttp.r014.relation.0572",
        "ttp.r014.relation.0575",
        "ttp.r014.relation.0581",
        "ttp.r014.relation.0584",
        "ttp.r014.relation.0588",
        "ttp.r014.relation.0592",
        "ttp.r014.relation.0593",
        "ttp.r014.relation.0595",
        "ttp.r014.relation.0599",
        "ttp.r014.relation.0610",
        "ttp.r014.relation.0611",
        "ttp.r014.relation.0615",
        "ttp.r014.relation.0618",
        "ttp.r014.relation.0621",
        "ttp.r014.relation.0627",
        "ttp.r014.relation.0629",
        "ttp.r014.relation.0631",
        "ttp.r014.relation.0633",
        "ttp.r014.relation.0635",
        "ttp.r014.relation.0636",
        "ttp.r014.relation.0641",
        "ttp.r014.relation.0643",
        "ttp.r014.relation.0647",
        "ttp.r014.relation.0712",
        "ttp.r014.relation.0716",
        "ttp.r014.relation.0717",
        "ttp.r014.relation.0721",
        "ttp.r014.relation.0725",
        "ttp.r014.relation.0733",
        "ttp.r014.relation.0740",
        "ttp.r014.relation.0748",
        "ttp.r014.relation.0751",
        "ttp.r014.relation.0756",
        "ttp.r014.relation.0759",
        "ttp.r014.relation.0761",
        "ttp.r014.relation.0762",
        "ttp.r014.relation.0765",
        "ttp.r014.relation.0912",
        "ttp.r014.relation.0922",
        "ttp.r014.relation.0927",
        "ttp.r014.relation.0932",
        "ttp.r014.relation.1048",
        "ttp.r014.relation.1073",
        "ttp.r014.relation.1078",
        "ttp.r014.relation.1088",
        "ttp.r014.relation.1093",
        "ttp.r014.relation.1111",
        "ttp.r014.relation.1188",
        "ttp.r014.relation.1381",
        "ttp.r014.relation.1392",
        "ttp.r014.relation.1397"
      ],
      "name_en": "greatest common divisor",
      "name_id": "faktor persekutuan terbesar",
      "native_object_sha256": "9a7abd0f405b48e8ac5242e892140b0223a909534a5ea6750480ed52e2ec9ddc",
      "prerequisite_concept_ids": [
        "ttp.concept.common_divisor",
        "ttp.concept.natural_number"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#gcd",
      "taxonomy_path": "mathematics/number-theory/greatest_common_divisor",
      "term_ids": [
        "ttp.r014.term.065"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gcd",
        "ttp.r014.unit.sec.gcd.discussion.01",
        "ttp.r014.unit.sec.gcd.definition.greatest-common-divisor",
        "ttp.r014.unit.eg.gcda",
        "ttp.r014.unit.sec.gcd.definition.relatively-prime",
        "ttp.r014.unit.eg.gcdb",
        "ttp.r014.unit.sec.gcd.discussion.02",
        "ttp.r014.unit.thm.dividebygcd",
        "ttp.r014.unit.thm.dividebygcd.proof",
        "ttp.r014.unit.sec.gcd.discussion.03",
        "ttp.r014.unit.sec.gcd.theorem.invariance",
        "ttp.r014.unit.sec.gcd.theorem.invariance.proof",
        "ttp.r014.unit.eg.gcdc",
        "ttp.r014.unit.sec.gcd.discussion.04",
        "ttp.r014.unit.thm.gcdislincomb",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.cor.intlincombrelprime",
        "ttp.r014.unit.sec.gcd.definition.gcd-family",
        "ttp.r014.unit.sec.gcd.definition.mutually-relatively-prime",
        "ttp.r014.unit.eg.mutrelprime",
        "ttp.r014.unit.sec.gcd.definition.pairwise-relatively-prime",
        "ttp.r014.unit.sec.gcd.exercise.01",
        "ttp.r014.unit.sec.gcd.exercise.02",
        "ttp.r014.unit.sec.gcd.exercise.03",
        "ttp.r014.unit.sec.gcd.exercise.04",
        "ttp.r014.unit.sec.gcd.exercise.05",
        "ttp.r014.unit.sec.gcd.exercise.06",
        "ttp.r014.unit.sec.gcd.exercise.07",
        "ttp.r014.unit.sec.gcd.exercise.08",
        "ttp.r014.unit.sec.gcd.exercise.09",
        "ttp.r014.unit.sec.ea",
        "ttp.r014.unit.sec.ea.discussion.01",
        "ttp.r014.unit.lem.gcdafterdivision",
        "ttp.r014.unit.lem.gcdafterdivision.proof",
        "ttp.r014.unit.sec.ea.discussion.02",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.sec.ea.discussion.03",
        "ttp.r014.unit.eg.ea",
        "ttp.r014.unit.sec.ea.exercise.01",
        "ttp.r014.unit.sec.ea.exercise.02",
        "ttp.r014.unit.sec.ea.exercise.03",
        "ttp.r014.unit.sec.ea.exercise.04",
        "ttp.r014.unit.sec.ea.exercise.05",
        "ttp.r014.unit.lem.euclids",
        "ttp.r014.unit.thm.congcanc",
        "ttp.r014.unit.thm.congcanc.proof",
        "ttp.r014.unit.eg.solvcongs",
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.thm.basiclincongs",
        "ttp.r014.unit.thm.basiclincongs.proof",
        "ttp.r014.unit.eg.multiplesolscongs",
        "ttp.r014.unit.sec.lc.discussion.05",
        "ttp.r014.unit.sec.lc.exercise.01",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.thm.linear-congruence-classes",
        "ttp.r014.unit.thm.linear-congruence-classes.proof"
      ]
    },
    {
      "concept_code": "hash_value",
      "concept_id": "ttp.concept.hash_value",
      "coverage_relation_ids": [
        "ttp.r014.relation.2794",
        "ttp.r014.relation.2810",
        "ttp.r014.relation.2826"
      ],
      "name_en": "hash value",
      "name_id": "nilai hash",
      "native_object_sha256": "b0e627d503f681b5727a8625528d7e4591ff38b00bee1fd788fc037c776cce36",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/hash_value",
      "term_ids": [
        "ttp.r014.term.186"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "hex",
      "concept_id": "ttp.concept.hex",
      "coverage_relation_ids": [
        "ttp.r014.relation.0411"
      ],
      "name_en": "hex",
      "name_id": "heks",
      "native_object_sha256": "dc6fd12d24a169df8a1006ce3cc1d055b38a06e42185cee3d2264bb656bb1378",
      "prerequisite_concept_ids": [
        "ttp.concept.hexadecimal"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/hex",
      "term_ids": [
        "ttp.r014.term.062"
      ],
      "unit_ids": [
        "ttp.r014.unit.def.baseb"
      ]
    },
    {
      "concept_code": "hexadecimal",
      "concept_id": "ttp.concept.hexadecimal",
      "coverage_relation_ids": [
        "ttp.r014.relation.0410",
        "ttp.r014.relation.0439",
        "ttp.r014.relation.0442"
      ],
      "name_en": "hexadecimal",
      "name_id": "heksadesimal",
      "native_object_sha256": "e7779be6c5a107faafdb0410a4e7512db4f363589ed2995777cd231ef294e30e",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/hexadecimal",
      "term_ids": [
        "ttp.r014.term.061"
      ],
      "unit_ids": [
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.sec.roiidb.exercise.04",
        "ttp.r014.unit.sec.roiidb.exercise.05"
      ]
    },
    {
      "concept_code": "identity_element",
      "concept_id": "ttp.concept.identity_element",
      "coverage_relation_ids": [
        "ttp.r014.relation.0193",
        "ttp.r014.relation.1378",
        "ttp.r014.relation.1405"
      ],
      "name_en": "identity element",
      "name_id": "elemen identitas",
      "native_object_sha256": "e5e0b597e4e7e883c07d14bc3dbf419f94489d697073dc51dfb2f58f6b875248",
      "prerequisite_concept_ids": [
        "ttp.concept.binary_operation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/identity_element",
      "term_ids": [
        "ttp.r014.term.041"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.sec.awtwwc.exercise.01"
      ]
    },
    {
      "concept_code": "identity_key_binding",
      "concept_id": "ttp.concept.identity_key_binding",
      "coverage_relation_ids": [
        "ttp.r014.relation.2839"
      ],
      "name_en": "identity–key binding",
      "name_id": "pengikatan identitas--kunci",
      "native_object_sha256": "b2901bdfa7c29931a0fc1c81abc9a8f3c1989dabd90bab2ed9a8fd94af5e8d4d",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/identity_key_binding",
      "term_ids": [
        "ttp.r014.term.199"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "index_discrete_log",
      "concept_id": "ttp.concept.index_discrete_log",
      "coverage_relation_ids": [
        "ttp.r014.relation.0133"
      ],
      "name_en": "number-theoretic index / discrete logarithm",
      "name_id": "indeks / logaritma diskret",
      "native_object_sha256": "15815e06811373c5d0fa7f428b812dcd0f51361784538625bde0d81b08070474",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/-catatan-rilis.html#catatan-rilis",
      "taxonomy_path": "mathematics/number-theory/index_discrete_log",
      "term_ids": [
        "ttp.r014.term.018"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes"
      ]
    },
    {
      "concept_code": "index_modulo",
      "concept_id": "ttp.concept.index_modulo",
      "coverage_relation_ids": [
        "ttp.r014.relation.2694",
        "ttp.r014.relation.2724",
        "ttp.r014.relation.2754",
        "ttp.r014.relation.2784",
        "ttp.r014.relation.2997"
      ],
      "name_en": "index modulo n",
      "name_id": "indeks modulo n",
      "native_object_sha256": "a127ffb94214c6672b1561183c38c1c5c9b160e040f8666da4de284fc945c5ad",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/index_modulo",
      "term_ids": [
        "ttp.r014.term.176"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03",
        "ttp.r014.unit.id-id.chap.ieqdl"
      ]
    },
    {
      "concept_code": "index_relative",
      "concept_id": "ttp.concept.index_relative",
      "coverage_relation_ids": [
        "ttp.r014.relation.2920",
        "ttp.r014.relation.2923",
        "ttp.r014.relation.2926",
        "ttp.r014.relation.2929"
      ],
      "name_en": "index of b relative to a",
      "name_id": "indeks b relatif terhadap a",
      "native_object_sha256": "f83bd0a6f944a9b3fbc135512eb4c12c553acabdd8ea0daaf911be93a7c32c06",
      "prerequisite_concept_ids": [
        "ttp.concept.primitive_root",
        "ttp.concept.discrete_logarithm"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-I",
      "taxonomy_path": "mathematics/number-theory/index_relative",
      "term_ids": [
        "ttp.r014.term.221"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.indices",
        "ttp.r014.unit.sec.indices.exercise.01",
        "ttp.r014.unit.sec.indices.exercise.02",
        "ttp.r014.unit.sec.indices.exercise.03"
      ]
    },
    {
      "concept_code": "information_security",
      "concept_id": "ttp.concept.information_security",
      "coverage_relation_ids": [
        "ttp.r014.relation.2511",
        "ttp.r014.relation.2530",
        "ttp.r014.relation.2549",
        "ttp.r014.relation.2568"
      ],
      "name_en": "information security",
      "name_id": "keamanan informasi",
      "native_object_sha256": "58453668f69f7112f18109eb4977c02026410b95dd907e86136dda72cd9ed80b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/information_security",
      "term_ids": [
        "ttp.r014.term.116"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "information_theoretic_security",
      "concept_id": "ttp.concept.information_theoretic_security",
      "coverage_relation_ids": [
        "ttp.r014.relation.2587",
        "ttp.r014.relation.2596",
        "ttp.r014.relation.2605",
        "ttp.r014.relation.2614"
      ],
      "name_en": "information-theoretically secure",
      "name_id": "aman secara teori informasi",
      "native_object_sha256": "4a59d54aed2da2890402b7a4566506abcc1083482a81dc432db688391da26317",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/information_theoretic_security",
      "term_ids": [
        "ttp.r014.term.135"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "injective",
      "concept_id": "ttp.concept.injective",
      "coverage_relation_ids": [
        "ttp.r014.relation.1506"
      ],
      "name_en": "injective",
      "name_id": "injektif",
      "native_object_sha256": "558277f5e34cbf7313e8fc25b3b294bcd2c0670ced1429c7b6d7c86fec35f863",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#thm-phiismultiplicative",
      "taxonomy_path": "mathematics/number-theory/injective",
      "term_ids": [
        "ttp.r014.term.093"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "input_length",
      "concept_id": "ttp.concept.input_length",
      "coverage_relation_ids": [
        "ttp.r014.relation.2692",
        "ttp.r014.relation.2722",
        "ttp.r014.relation.2752",
        "ttp.r014.relation.2782"
      ],
      "name_en": "input length",
      "name_id": "panjang masukan",
      "native_object_sha256": "7b0ca704ce9f9fe1aa46a8372ccc717cea0ab31ad64518885ad3b3c0093abce1",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/input_length",
      "term_ids": [
        "ttp.r014.term.174"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "integer",
      "concept_id": "ttp.concept.integer",
      "coverage_relation_ids": [
        "ttp.r014.relation.0186",
        "ttp.r014.relation.0290",
        "ttp.r014.relation.0561",
        "ttp.r014.relation.0571",
        "ttp.r014.relation.0580",
        "ttp.r014.relation.0587",
        "ttp.r014.relation.0598",
        "ttp.r014.relation.0613",
        "ttp.r014.relation.0742",
        "ttp.r014.relation.0877",
        "ttp.r014.relation.0893",
        "ttp.r014.relation.1056",
        "ttp.r014.relation.1067",
        "ttp.r014.relation.1070",
        "ttp.r014.relation.1083"
      ],
      "name_en": "integer",
      "name_id": "bilangan bulat",
      "native_object_sha256": "27805153584c82206cbdef7f1d5e73cc7da46d12bfe1b29c1825b53103852f5b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/integer",
      "term_ids": [
        "ttp.r014.term.007"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.sec.dada.definition.divisibility",
        "ttp.r014.unit.sec.gcd.definition.greatest-common-divisor",
        "ttp.r014.unit.sec.gcd.discussion.02",
        "ttp.r014.unit.thm.dividebygcd.proof",
        "ttp.r014.unit.sec.gcd.theorem.invariance",
        "ttp.r014.unit.thm.gcdislincomb",
        "ttp.r014.unit.sec.gcd.definition.gcd-family",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.def.congruence",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.def.linearcongruence",
        "ttp.r014.unit.def.diophantine",
        "ttp.r014.unit.sec.lc.discussion.04",
        "ttp.r014.unit.thm.basiclincongs.proof"
      ]
    },
    {
      "concept_code": "integers_mod_n",
      "concept_id": "ttp.concept.integers_mod_n",
      "coverage_relation_ids": [
        "ttp.r014.relation.1302",
        "ttp.r014.relation.1333",
        "ttp.r014.relation.1337",
        "ttp.r014.relation.1343",
        "ttp.r014.relation.1349",
        "ttp.r014.relation.1352",
        "ttp.r014.relation.1359",
        "ttp.r014.relation.1365",
        "ttp.r014.relation.1371",
        "ttp.r014.relation.1372",
        "ttp.r014.relation.1383",
        "ttp.r014.relation.1387",
        "ttp.r014.relation.1390",
        "ttp.r014.relation.1395",
        "ttp.r014.relation.1401",
        "ttp.r014.relation.1412",
        "ttp.r014.relation.1417",
        "ttp.r014.relation.1486",
        "ttp.r014.relation.1490",
        "ttp.r014.relation.1512"
      ],
      "name_en": "integers modulo n",
      "name_id": "bilangan bulat modulo n",
      "native_object_sha256": "65a7a63d10e9cbec6d0b488c8c02b9245fb35556011fbab07ef832e22c89a83a",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence_class",
        "ttp.concept.modulo"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/integers_mod_n",
      "term_ids": [
        "ttp.r014.term.087"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.integers-mod-n",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof",
        "ttp.r014.unit.sec.awtwwc.discussion.03",
        "ttp.r014.unit.def.congruence-class-operations",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.thm.plustimeswelldefined.proof",
        "ttp.r014.unit.sec.awtwwc.discussion.04",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.thm.plustimesproperties.proof",
        "ttp.r014.unit.sec.awtwwc.discussion.05",
        "ttp.r014.unit.thm.linear-congruence-classes",
        "ttp.r014.unit.thm.linear-congruence-classes.proof",
        "ttp.r014.unit.sec.awtwwc.exercises",
        "ttp.r014.unit.sec.awtwwc.exercise.02",
        "ttp.r014.unit.sec.awtwwc.exercise.04",
        "ttp.r014.unit.sec.ephif.discussion.02",
        "ttp.r014.unit.thm.euler-phi-counts-units",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "integral_domain",
      "concept_id": "ttp.concept.integral_domain",
      "coverage_relation_ids": [
        "ttp.r014.relation.2869",
        "ttp.r014.relation.2876",
        "ttp.r014.relation.2883",
        "ttp.r014.relation.2890",
        "ttp.r014.relation.2897",
        "ttp.r014.relation.2904",
        "ttp.r014.relation.2911",
        "ttp.r014.relation.2918"
      ],
      "name_en": "integral domain / domain",
      "name_id": "domain integral / domain",
      "native_object_sha256": "cc868fe0b2eb35c54025ab4a7c07443c6d825a47979c0b282d85a8bf6fb24f85",
      "prerequisite_concept_ids": [
        "ttp.concept.zero_product_property"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/integral_domain",
      "term_ids": [
        "ttp.r014.term.219"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "integrity",
      "concept_id": "ttp.concept.integrity",
      "coverage_relation_ids": [
        "ttp.r014.relation.2513",
        "ttp.r014.relation.2532",
        "ttp.r014.relation.2551",
        "ttp.r014.relation.2570"
      ],
      "name_en": "integrity",
      "name_id": "integritas",
      "native_object_sha256": "25a480b1d644f80e57a9a3f6f3b15a968e12c17cb67d94466ddf3b88206dfddf",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/integrity",
      "term_ids": [
        "ttp.r014.term.118"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "kerckhoffs_principle",
      "concept_id": "ttp.concept.kerckhoffs_principle",
      "coverage_relation_ids": [
        "ttp.r014.relation.2523",
        "ttp.r014.relation.2542",
        "ttp.r014.relation.2561",
        "ttp.r014.relation.2580"
      ],
      "name_en": "Kerckhoffs's Principle",
      "name_id": "Prinsip Kerckhoffs",
      "native_object_sha256": "6eb0cb65250cf3c47defc164f58c187a8a5e70ab6a287c50e1f94d2080d083dd",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/kerckhoffs_principle",
      "term_ids": [
        "ttp.r014.term.128"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "key",
      "concept_id": "ttp.concept.key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2521",
        "ttp.r014.relation.2540",
        "ttp.r014.relation.2559",
        "ttp.r014.relation.2578"
      ],
      "name_en": "key",
      "name_id": "kunci",
      "native_object_sha256": "815cfaea9dac04e5c643e331bb8962042b22e5b5b17747364d6c5918930ad239",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/key",
      "term_ids": [
        "ttp.r014.term.126"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "key_distribution",
      "concept_id": "ttp.concept.key_distribution",
      "coverage_relation_ids": [
        "ttp.r014.relation.2590",
        "ttp.r014.relation.2599",
        "ttp.r014.relation.2608",
        "ttp.r014.relation.2617"
      ],
      "name_en": "key distribution",
      "name_id": "distribusi kunci",
      "native_object_sha256": "58135825dcbf17543979831531709a1918d75efe7ed1376109b4420fe2a85d91",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/key_distribution",
      "term_ids": [
        "ttp.r014.term.138"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "key_exchange",
      "concept_id": "ttp.concept.key_exchange",
      "coverage_relation_ids": [
        "ttp.r014.relation.0135",
        "ttp.r014.relation.2510",
        "ttp.r014.relation.2529",
        "ttp.r014.relation.2548",
        "ttp.r014.relation.2567"
      ],
      "name_en": "key exchange",
      "name_id": "pertukaran kunci",
      "native_object_sha256": "3262045d4d02a2cf7014580b0fe7bdd7c301bce9cef905a5c5072689be0d65c9",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "mathematics/number-theory/key_exchange",
      "term_ids": [
        "ttp.r014.term.012"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes",
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "key_fingerprint",
      "concept_id": "ttp.concept.key_fingerprint",
      "coverage_relation_ids": [
        "ttp.r014.relation.2849"
      ],
      "name_en": "key fingerprint",
      "name_id": "sidik jari kunci",
      "native_object_sha256": "98df575db6f7fcfca757b2c083ea70c5b3281bf21081b78680236b22dfdb7e33",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/key_fingerprint",
      "term_ids": [
        "ttp.r014.term.209"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "key_generation_algorithm",
      "concept_id": "ttp.concept.key_generation_algorithm",
      "coverage_relation_ids": [
        "ttp.r014.relation.2673",
        "ttp.r014.relation.2703",
        "ttp.r014.relation.2733",
        "ttp.r014.relation.2763"
      ],
      "name_en": "key-generation algorithm",
      "name_id": "algoritme pembangkitan kunci",
      "native_object_sha256": "07ce49ae3112142e0c9dbe8482536efed21195d76565d4cee1ae9125ede853db",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/key_generation_algorithm",
      "term_ids": [
        "ttp.r014.term.155"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "key_length",
      "concept_id": "ttp.concept.key_length",
      "coverage_relation_ids": [
        "ttp.r014.relation.2628",
        "ttp.r014.relation.2641",
        "ttp.r014.relation.2654",
        "ttp.r014.relation.2667"
      ],
      "name_en": "key length",
      "name_id": "panjang kunci",
      "native_object_sha256": "7dea29788b0bcccd0b52291d74ebc3c4e8e44d3759076ada068909cf43404511",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/key_length",
      "term_ids": [
        "ttp.r014.term.149"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "key_position",
      "concept_id": "ttp.concept.key_position",
      "coverage_relation_ids": [
        "ttp.r014.relation.2629",
        "ttp.r014.relation.2642",
        "ttp.r014.relation.2655",
        "ttp.r014.relation.2668"
      ],
      "name_en": "key position",
      "name_id": "posisi kunci",
      "native_object_sha256": "db3fb452f54afcd7abe1c173d819618a97288ecef92ab2319107f94335f6e87f",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/key_position",
      "term_ids": [
        "ttp.r014.term.150"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "key_signing_party",
      "concept_id": "ttp.concept.key_signing_party",
      "coverage_relation_ids": [
        "ttp.r014.relation.2848"
      ],
      "name_en": "key-signing party",
      "name_id": "pertemuan penandatanganan kunci",
      "native_object_sha256": "ac62ac0b14f2e1564b99c4bbef240c55950ed7ab4bd0b559efc6de10e064f1b0",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/key_signing_party",
      "term_ids": [
        "ttp.r014.term.208"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "keyspace",
      "concept_id": "ttp.concept.keyspace",
      "coverage_relation_ids": [
        "ttp.r014.relation.2619",
        "ttp.r014.relation.2632",
        "ttp.r014.relation.2645",
        "ttp.r014.relation.2658"
      ],
      "name_en": "keyspace",
      "name_id": "ruang kunci",
      "native_object_sha256": "ffc912dcd44e853f724891615b72ec97000ac5fee6147371d61881030ac37b0f",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/keyspace",
      "term_ids": [
        "ttp.r014.term.140"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "lagranges_theorem",
      "concept_id": "ttp.concept.lagranges_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2481",
        "ttp.r014.relation.2485",
        "ttp.r014.relation.2489",
        "ttp.r014.relation.2493",
        "ttp.r014.relation.2497"
      ],
      "name_en": "Lagrange's Theorem",
      "name_id": "Teorema Lagrange",
      "native_object_sha256": "3fda448b934a6a705b8d73ef35713cfddede1849d121e878057390c89d395bd2",
      "prerequisite_concept_ids": [
        "ttp.concept.unit_group"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-MOaA",
      "taxonomy_path": "mathematics/number-theory/lagranges_theorem",
      "term_ids": [
        "ttp.r014.term.110"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.moaa",
        "ttp.r014.unit.sec.moaa.exercise.01",
        "ttp.r014.unit.sec.moaa.exercise.02",
        "ttp.r014.unit.sec.moaa.exercise.03",
        "ttp.r014.unit.sec.moaa.exercise.04"
      ]
    },
    {
      "concept_code": "least_element",
      "concept_id": "ttp.concept.least_element",
      "coverage_relation_ids": [
        "ttp.r014.relation.0143",
        "ttp.r014.relation.0145"
      ],
      "name_en": "least element",
      "name_id": "elemen terkecil",
      "native_object_sha256": "7be7927f678353b2e85607ae16029c41586bf93f569a709dfcef5a95e9fce891",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#prinsip-keterurutan-baik",
      "taxonomy_path": "mathematics/number-theory/least_element",
      "term_ids": [
        "ttp.r014.term.002"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.definition.01",
        "ttp.r014.unit.sec.wopami.principle.well-ordering"
      ]
    },
    {
      "concept_code": "least_squares",
      "concept_id": "ttp.concept.least_squares",
      "coverage_relation_ids": [
        "ttp.r014.relation.2626",
        "ttp.r014.relation.2639",
        "ttp.r014.relation.2652",
        "ttp.r014.relation.2665"
      ],
      "name_en": "least squares",
      "name_id": "kuadrat terkecil",
      "native_object_sha256": "4849379bcc5f7ecf9f569012e43dd20e5e7918d4ea01c72736ab2741c9d77385",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/least_squares",
      "term_ids": [
        "ttp.r014.term.147"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "letter_frequency",
      "concept_id": "ttp.concept.letter_frequency",
      "coverage_relation_ids": [
        "ttp.r014.relation.2624",
        "ttp.r014.relation.2637",
        "ttp.r014.relation.2650",
        "ttp.r014.relation.2663"
      ],
      "name_en": "letter frequency",
      "name_id": "frekuensi huruf",
      "native_object_sha256": "f6bc953f588776ec6abb814c3644e5359b8ceff87eeb81294e402e8039843f21",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/letter_frequency",
      "term_ids": [
        "ttp.r014.term.145"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "linear_combination",
      "concept_id": "ttp.concept.linear_combination",
      "coverage_relation_ids": [
        "ttp.r014.relation.0307",
        "ttp.r014.relation.0309",
        "ttp.r014.relation.0311",
        "ttp.r014.relation.0313",
        "ttp.r014.relation.0553",
        "ttp.r014.relation.0591",
        "ttp.r014.relation.0594",
        "ttp.r014.relation.0596",
        "ttp.r014.relation.0600",
        "ttp.r014.relation.0607",
        "ttp.r014.relation.0609",
        "ttp.r014.relation.0642",
        "ttp.r014.relation.0714",
        "ttp.r014.relation.0734",
        "ttp.r014.relation.0746",
        "ttp.r014.relation.0749",
        "ttp.r014.relation.0757",
        "ttp.r014.relation.0760",
        "ttp.r014.relation.0770",
        "ttp.r014.relation.0901",
        "ttp.r014.relation.0916",
        "ttp.r014.relation.1082"
      ],
      "name_en": "linear combination",
      "name_id": "kombinasi linear",
      "native_object_sha256": "47d64cc9c547f0167500035d175f7c5639cc48697d4908c00aaf3f4f9cd778d9",
      "prerequisite_concept_ids": [
        "ttp.concept.addition",
        "ttp.concept.multiplication"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-divisibilitylincombs",
      "taxonomy_path": "mathematics/number-theory/linear_combination",
      "term_ids": [
        "ttp.r014.term.051"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.discussion.linear-combination",
        "ttp.r014.unit.thm.divisibilitylincombs",
        "ttp.r014.unit.thm.divisibilitylincombs.proof",
        "ttp.r014.unit.sec.dada.discussion.finite-combination",
        "ttp.r014.unit.sec.gcd",
        "ttp.r014.unit.sec.gcd.theorem.invariance.proof",
        "ttp.r014.unit.sec.gcd.discussion.04",
        "ttp.r014.unit.thm.gcdislincomb",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.sec.gcd.discussion.05",
        "ttp.r014.unit.cor.intlincombrelprime",
        "ttp.r014.unit.sec.gcd.exercise.07",
        "ttp.r014.unit.sec.ea",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.sec.ea.note.extended-algorithm",
        "ttp.r014.unit.sec.ea.discussion.03",
        "ttp.r014.unit.sec.ea.exercise.01",
        "ttp.r014.unit.sec.ea.exercise.02",
        "ttp.r014.unit.sec.ea.exercise.06",
        "ttp.r014.unit.thm.combing.proof",
        "ttp.r014.unit.lem.euclids.proof",
        "ttp.r014.unit.thm.basiclincongs.proof"
      ]
    },
    {
      "concept_code": "linear_congruence",
      "concept_id": "ttp.concept.linear_congruence",
      "coverage_relation_ids": [
        "ttp.r014.relation.1045",
        "ttp.r014.relation.1053",
        "ttp.r014.relation.1054",
        "ttp.r014.relation.1058",
        "ttp.r014.relation.1060",
        "ttp.r014.relation.1065",
        "ttp.r014.relation.1068",
        "ttp.r014.relation.1072",
        "ttp.r014.relation.1077",
        "ttp.r014.relation.1084",
        "ttp.r014.relation.1087",
        "ttp.r014.relation.1092",
        "ttp.r014.relation.1100",
        "ttp.r014.relation.1108",
        "ttp.r014.relation.1110",
        "ttp.r014.relation.1114",
        "ttp.r014.relation.1388",
        "ttp.r014.relation.1391",
        "ttp.r014.relation.1396",
        "ttp.r014.relation.1418"
      ],
      "name_en": "linear congruence",
      "name_id": "kongruensi linear",
      "native_object_sha256": "34f345a62482147ed2c0dc8139d64b713e22c15bc6b7beca3e490cf53efce37a",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.integer",
        "ttp.concept.natural_number"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-LC",
      "taxonomy_path": "mathematics/number-theory/linear_congruence",
      "term_ids": [
        "ttp.r014.term.077"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.sec.lc.discussion.01",
        "ttp.r014.unit.def.linearcongruence",
        "ttp.r014.unit.sec.lc.discussion.02",
        "ttp.r014.unit.thm.linearcongruencesameclass",
        "ttp.r014.unit.sec.lc.discussion.03",
        "ttp.r014.unit.sec.lc.discussion.04",
        "ttp.r014.unit.thm.basiclincongs",
        "ttp.r014.unit.thm.basiclincongs.proof",
        "ttp.r014.unit.rem.uniqsolnlincong",
        "ttp.r014.unit.eg.multiplesolscongs",
        "ttp.r014.unit.sec.lc.discussion.05",
        "ttp.r014.unit.sec.lc.discussion.06",
        "ttp.r014.unit.sec.lc.exercises",
        "ttp.r014.unit.sec.lc.exercise.01",
        "ttp.r014.unit.sec.lc.exercise.02",
        "ttp.r014.unit.sec.awtwwc.discussion.05",
        "ttp.r014.unit.thm.linear-congruence-classes",
        "ttp.r014.unit.thm.linear-congruence-classes.proof",
        "ttp.r014.unit.sec.awtwwc.exercise.04"
      ]
    },
    {
      "concept_code": "man_in_the_middle_attack",
      "concept_id": "ttp.concept.man_in_the_middle_attack",
      "coverage_relation_ids": [
        "ttp.r014.relation.2838"
      ],
      "name_en": "man-in-the-middle attack",
      "name_id": "serangan man-in-the-middle",
      "native_object_sha256": "e9f2cd495695a7a0f14dea6d2f8152ea3fa8155c32bb0151dc87b58fb94353d8",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/man_in_the_middle_attack",
      "term_ids": [
        "ttp.r014.term.198"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "mathematical_induction",
      "concept_id": "ttp.concept.mathematical_induction",
      "coverage_relation_ids": [
        "ttp.r014.relation.0142",
        "ttp.r014.relation.0151",
        "ttp.r014.relation.0152",
        "ttp.r014.relation.0154",
        "ttp.r014.relation.0157",
        "ttp.r014.relation.0159",
        "ttp.r014.relation.0164",
        "ttp.r014.relation.0165",
        "ttp.r014.relation.0166",
        "ttp.r014.relation.0168",
        "ttp.r014.relation.0170",
        "ttp.r014.relation.0172",
        "ttp.r014.relation.0174",
        "ttp.r014.relation.0176",
        "ttp.r014.relation.0314",
        "ttp.r014.relation.1192"
      ],
      "name_en": "mathematical induction",
      "name_id": "induksi matematika",
      "native_object_sha256": "3ab3b06b688fa9ecbcb3476630fb93a2324f60b26822c6a0b84a63a60a3c3e75",
      "prerequisite_concept_ids": [
        "ttp.concept.well_ordering_principle"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-inductionv1a",
      "taxonomy_path": "mathematics/number-theory/mathematical_induction",
      "term_ids": [
        "ttp.r014.term.004"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.discussion.01",
        "ttp.r014.unit.sec.wopami.discussion.03",
        "ttp.r014.unit.sec.wopami.theorem.induction.01",
        "ttp.r014.unit.sec.wopami.theorem.induction.01.proof",
        "ttp.r014.unit.eg.inductionv1a",
        "ttp.r014.unit.eg.inductionv1b",
        "ttp.r014.unit.sec.wopami.theorem.induction.02.proof",
        "ttp.r014.unit.sec.wopami.exercise.01",
        "ttp.r014.unit.sec.wopami.exercise.02",
        "ttp.r014.unit.sec.wopami.exercise.03",
        "ttp.r014.unit.sec.wopami.exercise.04",
        "ttp.r014.unit.sec.wopami.exercise.05",
        "ttp.r014.unit.sec.wopami.exercise.06",
        "ttp.r014.unit.sec.wopami.exercise.07",
        "ttp.r014.unit.sec.dada.discussion.finite-combination",
        "ttp.r014.unit.thm.chinese-remainder.proof"
      ]
    },
    {
      "concept_code": "message_representative",
      "concept_id": "ttp.concept.message_representative",
      "coverage_relation_ids": [
        "ttp.r014.relation.2803",
        "ttp.r014.relation.2819",
        "ttp.r014.relation.2835"
      ],
      "name_en": "message representative",
      "name_id": "wakil pesan",
      "native_object_sha256": "c222b015fde4ac2b9d417465774b3d05cd651ed48db243f0dd35a6456a4a11eb",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/message_representative",
      "term_ids": [
        "ttp.r014.term.195"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "message_space",
      "concept_id": "ttp.concept.message_space",
      "coverage_relation_ids": [
        "ttp.r014.relation.2622",
        "ttp.r014.relation.2635",
        "ttp.r014.relation.2648",
        "ttp.r014.relation.2661"
      ],
      "name_en": "message space",
      "name_id": "ruang pesan",
      "native_object_sha256": "9755f6711555ceda826b6c6f2a7d2f11bf0a6ef9c6e8f3395d91b42d368c0f3b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/message_space",
      "term_ids": [
        "ttp.r014.term.143"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "modular_inverse",
      "concept_id": "ttp.concept.modular_inverse",
      "coverage_relation_ids": [
        "ttp.r014.relation.1050",
        "ttp.r014.relation.1091",
        "ttp.r014.relation.1095",
        "ttp.r014.relation.1099",
        "ttp.r014.relation.1102",
        "ttp.r014.relation.1105",
        "ttp.r014.relation.1109",
        "ttp.r014.relation.1117",
        "ttp.r014.relation.1119",
        "ttp.r014.relation.1171",
        "ttp.r014.relation.1189",
        "ttp.r014.relation.1196",
        "ttp.r014.relation.1385",
        "ttp.r014.relation.1487",
        "ttp.r014.relation.1494",
        "ttp.r014.relation.1513"
      ],
      "name_en": "modular inverse",
      "name_id": "invers modular",
      "native_object_sha256": "7e8a28cbe53e17387846aa2b874c881dcbb746c1767e1337948f17a94f65311d",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.modulo",
        "ttp.concept.relatively_prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-LC",
      "taxonomy_path": "mathematics/number-theory/modular_inverse",
      "term_ids": [
        "ttp.r014.term.079"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.sec.lc.discussion.05",
        "ttp.r014.unit.def.modularinverse",
        "ttp.r014.unit.sec.lc.discussion.06",
        "ttp.r014.unit.cor.modinv",
        "ttp.r014.unit.eg.modinverses",
        "ttp.r014.unit.sec.lc.exercises",
        "ttp.r014.unit.sec.lc.exercise.03",
        "ttp.r014.unit.sec.lc.exercise.04",
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.eg.systemofcongs",
        "ttp.r014.unit.thm.plustimesproperties.proof",
        "ttp.r014.unit.sec.ephif.discussion.02",
        "ttp.r014.unit.thm.euler-phi-counts-units.proof",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "modulo",
      "concept_id": "ttp.concept.modulo",
      "coverage_relation_ids": [
        "ttp.r014.relation.0869",
        "ttp.r014.relation.0875",
        "ttp.r014.relation.0880",
        "ttp.r014.relation.0884",
        "ttp.r014.relation.0904",
        "ttp.r014.relation.0921",
        "ttp.r014.relation.0931",
        "ttp.r014.relation.0936",
        "ttp.r014.relation.0941",
        "ttp.r014.relation.0946",
        "ttp.r014.relation.0948",
        "ttp.r014.relation.0952",
        "ttp.r014.relation.0955",
        "ttp.r014.relation.0959",
        "ttp.r014.relation.1047",
        "ttp.r014.relation.1062",
        "ttp.r014.relation.1076",
        "ttp.r014.relation.1081",
        "ttp.r014.relation.1097",
        "ttp.r014.relation.1107",
        "ttp.r014.relation.1113",
        "ttp.r014.relation.1115",
        "ttp.r014.relation.1118",
        "ttp.r014.relation.1122",
        "ttp.r014.relation.1169",
        "ttp.r014.relation.1174",
        "ttp.r014.relation.1179",
        "ttp.r014.relation.1185",
        "ttp.r014.relation.1195",
        "ttp.r014.relation.1202",
        "ttp.r014.relation.1206",
        "ttp.r014.relation.1209",
        "ttp.r014.relation.1212",
        "ttp.r014.relation.1335",
        "ttp.r014.relation.1340",
        "ttp.r014.relation.1346"
      ],
      "name_en": "modulo",
      "name_id": "modulo",
      "native_object_sha256": "6053eec8364f0142a0c81f21755c95f17373f5d8833c1c182fc558565a62c1ef",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.natural_number"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-ItC",
      "taxonomy_path": "mathematics/number-theory/modulo",
      "term_ids": [
        "ttp.r014.term.073"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.itc",
        "ttp.r014.unit.def.congruence",
        "ttp.r014.unit.eg.congruences",
        "ttp.r014.unit.thm.basiccongprops",
        "ttp.r014.unit.eg.congarith",
        "ttp.r014.unit.thm.congcanc",
        "ttp.r014.unit.eg.solvcongs",
        "ttp.r014.unit.thm.numzerosmodafactor",
        "ttp.r014.unit.thm.numzerosmodafactor.proof",
        "ttp.r014.unit.sec.itc.exercise.01",
        "ttp.r014.unit.sec.itc.exercise.02",
        "ttp.r014.unit.sec.itc.exercise.03",
        "ttp.r014.unit.sec.itc.exercise.04",
        "ttp.r014.unit.sec.itc.exercise.05",
        "ttp.r014.unit.sec.lc",
        "ttp.r014.unit.thm.linearcongruencesameclass",
        "ttp.r014.unit.thm.basiclincongs",
        "ttp.r014.unit.thm.basiclincongs.proof",
        "ttp.r014.unit.def.modularinverse",
        "ttp.r014.unit.eg.modinverses",
        "ttp.r014.unit.sec.lc.exercise.01",
        "ttp.r014.unit.sec.lc.exercise.02",
        "ttp.r014.unit.sec.lc.exercise.03",
        "ttp.r014.unit.sec.lc.exercise.04",
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.sec.crt.discussion.01",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.eg.systemofcongs",
        "ttp.r014.unit.sec.crt.exercise.01",
        "ttp.r014.unit.sec.crt.exercise.02",
        "ttp.r014.unit.sec.crt.exercise.03",
        "ttp.r014.unit.sec.crt.exercise.04",
        "ttp.r014.unit.def.integers-mod-n",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof"
      ]
    },
    {
      "concept_code": "multiple",
      "concept_id": "ttp.concept.multiple",
      "coverage_relation_ids": [
        "ttp.r014.relation.0294",
        "ttp.r014.relation.0938",
        "ttp.r014.relation.0944"
      ],
      "name_en": "multiple",
      "name_id": "kelipatan",
      "native_object_sha256": "7ff6db1b7fbbcd4059650f79f5c5c6527676fec7783656dd46f8313c8bb60c99",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#thm-numzerosmodafactor",
      "taxonomy_path": "mathematics/number-theory/multiple",
      "term_ids": [
        "ttp.r014.term.049"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.definition.divisibility",
        "ttp.r014.unit.thm.numzerosmodafactor",
        "ttp.r014.unit.thm.numzerosmodafactor.proof"
      ]
    },
    {
      "concept_code": "multiplication",
      "concept_id": "ttp.concept.multiplication",
      "coverage_relation_ids": [
        "ttp.r014.relation.0189",
        "ttp.r014.relation.0332",
        "ttp.r014.relation.0337",
        "ttp.r014.relation.0583",
        "ttp.r014.relation.0586",
        "ttp.r014.relation.0646",
        "ttp.r014.relation.0649",
        "ttp.r014.relation.0723",
        "ttp.r014.relation.0763",
        "ttp.r014.relation.0887",
        "ttp.r014.relation.0892",
        "ttp.r014.relation.0898",
        "ttp.r014.relation.0902",
        "ttp.r014.relation.0907",
        "ttp.r014.relation.0917",
        "ttp.r014.relation.0950",
        "ttp.r014.relation.1120",
        "ttp.r014.relation.1182",
        "ttp.r014.relation.1191",
        "ttp.r014.relation.1197",
        "ttp.r014.relation.1307",
        "ttp.r014.relation.1351",
        "ttp.r014.relation.1355",
        "ttp.r014.relation.1362",
        "ttp.r014.relation.1367",
        "ttp.r014.relation.1370",
        "ttp.r014.relation.1374",
        "ttp.r014.relation.1404",
        "ttp.r014.relation.1501",
        "ttp.r014.relation.1515",
        "ttp.r014.relation.1521"
      ],
      "name_en": "multiplication",
      "name_id": "perkalian",
      "native_object_sha256": "21f1d3acd7515c8fde186928102769e975163f42b4647e9bd437c9cc8ed4489a",
      "prerequisite_concept_ids": [
        "ttp.concept.integer"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/multiplication",
      "term_ids": [
        "ttp.r014.term.037"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.sec.dada.exercise.04",
        "ttp.r014.unit.sec.dada.exercise.07",
        "ttp.r014.unit.sec.gcd.discussion.03",
        "ttp.r014.unit.sec.gcd.theorem.invariance",
        "ttp.r014.unit.sec.gcd.exercise.08",
        "ttp.r014.unit.sec.gcd.exercise.09",
        "ttp.r014.unit.lem.gcdafterdivision.proof",
        "ttp.r014.unit.sec.ea.exercise.04",
        "ttp.r014.unit.thm.basiccongprops",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.thm.combing",
        "ttp.r014.unit.thm.combing.proof",
        "ttp.r014.unit.eg.congarith",
        "ttp.r014.unit.lem.euclids.proof",
        "ttp.r014.unit.sec.itc.exercise.02",
        "ttp.r014.unit.sec.lc.exercise.04",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.eg.systemofcongs",
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.sec.awtwwc.discussion.03",
        "ttp.r014.unit.def.congruence-class-operations",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.thm.plustimeswelldefined.proof",
        "ttp.r014.unit.sec.awtwwc.discussion.04",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.sec.awtwwc.exercise.01",
        "ttp.r014.unit.thm.phiismultiplicative",
        "ttp.r014.unit.thm.phiismultiplicative.proof",
        "ttp.r014.unit.sec.ephif.exercise.02"
      ]
    },
    {
      "concept_code": "multiplicative_function",
      "concept_id": "ttp.concept.multiplicative_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.1467",
        "ttp.r014.relation.1474",
        "ttp.r014.relation.1496",
        "ttp.r014.relation.1499",
        "ttp.r014.relation.1503"
      ],
      "name_en": "multiplicative function",
      "name_id": "fungsi multiplikatif",
      "native_object_sha256": "44e4430559bc63475959021f75ac8ed5d3a6eb0594965b6cc8e0a671881e78a2",
      "prerequisite_concept_ids": [
        "ttp.concept.euler_phi_function",
        "ttp.concept.relatively_prime",
        "ttp.concept.multiplication"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-EphiF",
      "taxonomy_path": "mathematics/number-theory/multiplicative_function",
      "term_ids": [
        "ttp.r014.term.097"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.sec.ephif.discussion.03",
        "ttp.r014.unit.thm.phiismultiplicative",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "multiplicative_inverse",
      "concept_id": "ttp.concept.multiplicative_inverse",
      "coverage_relation_ids": [
        "ttp.r014.relation.0195",
        "ttp.r014.relation.1380",
        "ttp.r014.relation.1384",
        "ttp.r014.relation.1407",
        "ttp.r014.relation.1491"
      ],
      "name_en": "multiplicative inverse",
      "name_id": "invers multiplikatif",
      "native_object_sha256": "ffedc0c8e2acb9ae952e68a88a1d42c4ea165145c06d95a4e2135fa05d1fdcd3",
      "prerequisite_concept_ids": [
        "ttp.concept.multiplication",
        "ttp.concept.identity_element"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/multiplicative_inverse",
      "term_ids": [
        "ttp.r014.term.043"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.thm.plustimesproperties.proof",
        "ttp.r014.unit.sec.awtwwc.exercise.01",
        "ttp.r014.unit.thm.euler-phi-counts-units"
      ]
    },
    {
      "concept_code": "multiplicative_order",
      "concept_id": "ttp.concept.multiplicative_order",
      "coverage_relation_ids": [
        "ttp.r014.relation.2480",
        "ttp.r014.relation.2484",
        "ttp.r014.relation.2488",
        "ttp.r014.relation.2492",
        "ttp.r014.relation.2496",
        "ttp.r014.relation.2998"
      ],
      "name_en": "multiplicative order modulo n",
      "name_id": "orde multiplikatif modulo n",
      "native_object_sha256": "133d05968d179b5dda94e66a51515977ec5246733e80e4482d17d9e88fb072dd",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-MOaA",
      "taxonomy_path": "mathematics/number-theory/multiplicative_order",
      "term_ids": [
        "ttp.r014.term.109"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.moaa",
        "ttp.r014.unit.sec.moaa.exercise.01",
        "ttp.r014.unit.sec.moaa.exercise.02",
        "ttp.r014.unit.sec.moaa.exercise.03",
        "ttp.r014.unit.sec.moaa.exercise.04",
        "ttp.r014.unit.id-id.chap.ieqdl"
      ]
    },
    {
      "concept_code": "mutually_relatively_prime",
      "concept_id": "ttp.concept.mutually_relatively_prime",
      "coverage_relation_ids": [
        "ttp.r014.relation.0614",
        "ttp.r014.relation.0616",
        "ttp.r014.relation.0623",
        "ttp.r014.relation.0626"
      ],
      "name_en": "mutually relatively prime",
      "name_id": "relatif prima secara bersama-sama",
      "native_object_sha256": "8d485b77ec11daeb5222043f01b3b19b1fb959c8db53b0ada396a44c8ac9d9ff",
      "prerequisite_concept_ids": [
        "ttp.concept.greatest_common_divisor",
        "ttp.concept.relatively_prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-mutrelprime",
      "taxonomy_path": "mathematics/number-theory/mutually_relatively_prime",
      "term_ids": [
        "ttp.r014.term.068"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gcd.definition.mutually-relatively-prime",
        "ttp.r014.unit.eg.mutrelprime",
        "ttp.r014.unit.eg.pairwiserelprime",
        "ttp.r014.unit.sec.gcd.proposition.pairwise-implies-mutual"
      ]
    },
    {
      "concept_code": "natural_number",
      "concept_id": "ttp.concept.natural_number",
      "coverage_relation_ids": [
        "ttp.r014.relation.0146",
        "ttp.r014.relation.0148",
        "ttp.r014.relation.0153",
        "ttp.r014.relation.0162",
        "ttp.r014.relation.0397",
        "ttp.r014.relation.0597",
        "ttp.r014.relation.0735",
        "ttp.r014.relation.0741",
        "ttp.r014.relation.0878",
        "ttp.r014.relation.1057",
        "ttp.r014.relation.1071",
        "ttp.r014.relation.1483",
        "ttp.r014.relation.1518",
        "ttp.r014.relation.1520"
      ],
      "name_en": "natural number",
      "name_id": "bilangan asli",
      "native_object_sha256": "1900a1e3f7b9d9bd3606548a22b86d614bff2e89c92c8965efd4f1582a237031",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-pigeonhole",
      "taxonomy_path": "mathematics/number-theory/natural_number",
      "term_ids": [
        "ttp.r014.term.006"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.principle.well-ordering",
        "ttp.r014.unit.thm.pigeonhole",
        "ttp.r014.unit.sec.wopami.theorem.induction.01",
        "ttp.r014.unit.sec.wopami.theorem.induction.02",
        "ttp.r014.unit.thm.basebexpansion",
        "ttp.r014.unit.thm.gcdislincomb",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.def.congruence",
        "ttp.r014.unit.def.linearcongruence",
        "ttp.r014.unit.sec.lc.discussion.04",
        "ttp.r014.unit.def.euler-phi",
        "ttp.r014.unit.sec.ephif.exercise.01",
        "ttp.r014.unit.sec.ephif.exercise.02"
      ]
    },
    {
      "concept_code": "non_repudiation",
      "concept_id": "ttp.concept.non_repudiation",
      "coverage_relation_ids": [
        "ttp.r014.relation.2515",
        "ttp.r014.relation.2534",
        "ttp.r014.relation.2553",
        "ttp.r014.relation.2572"
      ],
      "name_en": "non-repudiation",
      "name_id": "nirpenyangkalan",
      "native_object_sha256": "7e6848095ddc6131b9fee7a32e172b7a0bb4af057628f03ec108424866fcc430",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/non_repudiation",
      "term_ids": [
        "ttp.r014.term.120"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "octal",
      "concept_id": "ttp.concept.octal",
      "coverage_relation_ids": [
        "ttp.r014.relation.0409",
        "ttp.r014.relation.0434"
      ],
      "name_en": "octal",
      "name_id": "oktal",
      "native_object_sha256": "0036c2dcc5b9a59445d45440602f0c38d175df527522e79251dadd1342a3d471",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/octal",
      "term_ids": [
        "ttp.r014.term.060"
      ],
      "unit_ids": [
        "ttp.r014.unit.def.baseb",
        "ttp.r014.unit.sec.roiidb.exercise.02"
      ]
    },
    {
      "concept_code": "one_time_pad",
      "concept_id": "ttp.concept.one_time_pad",
      "coverage_relation_ids": [
        "ttp.r014.relation.2585",
        "ttp.r014.relation.2594",
        "ttp.r014.relation.2603",
        "ttp.r014.relation.2612"
      ],
      "name_en": "one-time pad",
      "name_id": "pad sekali pakai",
      "native_object_sha256": "1702c615e3250bcfbc48160d64cf14e681731e1283a5c6c75d5a0d7362c5e050",
      "prerequisite_concept_ids": [
        "ttp.concept.vigenere_cipher",
        "ttp.concept.fresh_randomness"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/one_time_pad",
      "term_ids": [
        "ttp.r014.term.133"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "one_way_function",
      "concept_id": "ttp.concept.one_way_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.2681",
        "ttp.r014.relation.2711",
        "ttp.r014.relation.2741",
        "ttp.r014.relation.2771"
      ],
      "name_en": "one-way function",
      "name_id": "fungsi satu arah",
      "native_object_sha256": "3438278f91fa4964a37f94c21ea1e36655bd98ea1739fd531fac62faf6355fc1",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/one_way_function",
      "term_ids": [
        "ttp.r014.term.163"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "order_class_count",
      "concept_id": "ttp.concept.order_class_count",
      "coverage_relation_ids": [
        "ttp.r014.relation.2870",
        "ttp.r014.relation.2877",
        "ttp.r014.relation.2884",
        "ttp.r014.relation.2891",
        "ttp.r014.relation.2898",
        "ttp.r014.relation.2905",
        "ttp.r014.relation.2912",
        "ttp.r014.relation.2919"
      ],
      "name_en": "number of classes of order d modulo p",
      "name_id": "banyaknya kelas berorde d modulo p",
      "native_object_sha256": "384c423df4bdc305f2d9c34950ec77f44b57ed56af410cbaaca7e7132b098107",
      "prerequisite_concept_ids": [
        "ttp.concept.primitive_root",
        "ttp.concept.gauss_totient_sum"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/order_class_count",
      "term_ids": [
        "ttp.r014.term.220"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "order_of_power",
      "concept_id": "ttp.concept.order_of_power",
      "coverage_relation_ids": [
        "ttp.r014.relation.2851",
        "ttp.r014.relation.2853",
        "ttp.r014.relation.2855",
        "ttp.r014.relation.2857",
        "ttp.r014.relation.2859"
      ],
      "name_en": "order of a power",
      "name_id": "orde suatu pangkat",
      "native_object_sha256": "aa8d87494f161188d4fd1c613fa5f841cadccfd6f05a3e26c0754c26a189265b",
      "prerequisite_concept_ids": [
        "ttp.concept.multiplicative_order",
        "ttp.concept.greatest_common_divisor"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-MPoMO",
      "taxonomy_path": "mathematics/number-theory/order_of_power",
      "term_ids": [
        "ttp.r014.term.211"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.multiplicative-order-properties",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.01",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.02",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.03",
        "ttp.r014.unit.sec.multiplicative-order-properties.exercise.04"
      ]
    },
    {
      "concept_code": "ownertrust",
      "concept_id": "ttp.concept.ownertrust",
      "coverage_relation_ids": [
        "ttp.r014.relation.2847"
      ],
      "name_en": "ownertrust / introducer trust",
      "name_id": "tingkat kepercayaan kepada pemilik kunci (ownertrust)",
      "native_object_sha256": "465f1fc1cb49b56c18d2b9f6aa446cfbe1cb638d9456d282b9e578d08a0e10f0",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/ownertrust",
      "term_ids": [
        "ttp.r014.term.207"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "pairwise_relatively_prime",
      "concept_id": "ttp.concept.pairwise_relatively_prime",
      "coverage_relation_ids": [
        "ttp.r014.relation.0619",
        "ttp.r014.relation.0622",
        "ttp.r014.relation.0625",
        "ttp.r014.relation.1170",
        "ttp.r014.relation.1180",
        "ttp.r014.relation.1186"
      ],
      "name_en": "pairwise relatively prime",
      "name_id": "relatif prima berpasangan",
      "native_object_sha256": "dd098ce0ff010a8f58cbfc88c130f727576df189ab5cfd6442f47b595b031d6d",
      "prerequisite_concept_ids": [
        "ttp.concept.greatest_common_divisor",
        "ttp.concept.relatively_prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#eg-pairwiserelprime",
      "taxonomy_path": "mathematics/number-theory/pairwise_relatively_prime",
      "term_ids": [
        "ttp.r014.term.069"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gcd.definition.pairwise-relatively-prime",
        "ttp.r014.unit.eg.pairwiserelprime",
        "ttp.r014.unit.sec.gcd.proposition.pairwise-implies-mutual",
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.thm.chinese-remainder.proof"
      ]
    },
    {
      "concept_code": "parity",
      "concept_id": "ttp.concept.parity",
      "coverage_relation_ids": [
        "ttp.r014.relation.0297",
        "ttp.r014.relation.0298",
        "ttp.r014.relation.0334",
        "ttp.r014.relation.0336",
        "ttp.r014.relation.0339",
        "ttp.r014.relation.0766",
        "ttp.r014.relation.0881",
        "ttp.r014.relation.0949"
      ],
      "name_en": "parity",
      "name_id": "paritas",
      "native_object_sha256": "d3e3367c3e52829d0f573f826711ecba06c9544399c6c50af7acd225fa7945ae",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#eg-congruences",
      "taxonomy_path": "mathematics/number-theory/parity",
      "term_ids": [
        "ttp.r014.term.050"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.dada.definition.parity",
        "ttp.r014.unit.sec.dada.discussion.parity",
        "ttp.r014.unit.sec.dada.exercise.06",
        "ttp.r014.unit.sec.dada.exercise.07",
        "ttp.r014.unit.sec.dada.exercise.09",
        "ttp.r014.unit.sec.ea.exercise.05",
        "ttp.r014.unit.eg.congruences",
        "ttp.r014.unit.sec.itc.exercise.02"
      ]
    },
    {
      "concept_code": "pigeonhole_principle",
      "concept_id": "ttp.concept.pigeonhole_principle",
      "coverage_relation_ids": [
        "ttp.r014.relation.0141",
        "ttp.r014.relation.0147",
        "ttp.r014.relation.0149"
      ],
      "name_en": "pigeonhole principle",
      "name_id": "prinsip sarang merpati",
      "native_object_sha256": "64f6a08b38ec2b0c4d958194cee265633091b32f04a8332fffa60ef9f7d7cee4",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-pigeonhole",
      "taxonomy_path": "mathematics/number-theory/pigeonhole_principle",
      "term_ids": [
        "ttp.r014.term.003"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.discussion.01",
        "ttp.r014.unit.thm.pigeonhole",
        "ttp.r014.unit.thm.pigeonhole.proof"
      ]
    },
    {
      "concept_code": "plaintext",
      "concept_id": "ttp.concept.plaintext",
      "coverage_relation_ids": [
        "ttp.r014.relation.2516",
        "ttp.r014.relation.2535",
        "ttp.r014.relation.2554",
        "ttp.r014.relation.2573"
      ],
      "name_en": "plaintext / cleartext",
      "name_id": "plainteks / teks terang",
      "native_object_sha256": "4142b578d706a8811e6300caac1eb28703bd3d6f3b97264d97f31b0bd807aad2",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/plaintext",
      "term_ids": [
        "ttp.r014.term.121"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "polynomial_mod_p",
      "concept_id": "ttp.concept.polynomial_mod_p",
      "coverage_relation_ids": [
        "ttp.r014.relation.2866",
        "ttp.r014.relation.2873",
        "ttp.r014.relation.2880",
        "ttp.r014.relation.2887",
        "ttp.r014.relation.2894",
        "ttp.r014.relation.2901",
        "ttp.r014.relation.2908",
        "ttp.r014.relation.2915"
      ],
      "name_en": "polynomial modulo p",
      "name_id": "polinomial modulo p",
      "native_object_sha256": "c37caa87e0ebb22f3598ee0937f175cc94787dae829e1cb46452112e5cd0e215",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.prime"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/polynomial_mod_p",
      "term_ids": [
        "ttp.r014.term.216"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "polynomial_root",
      "concept_id": "ttp.concept.polynomial_root",
      "coverage_relation_ids": [
        "ttp.r014.relation.2867",
        "ttp.r014.relation.2874",
        "ttp.r014.relation.2881",
        "ttp.r014.relation.2888",
        "ttp.r014.relation.2895",
        "ttp.r014.relation.2902",
        "ttp.r014.relation.2909",
        "ttp.r014.relation.2916"
      ],
      "name_en": "root of a polynomial",
      "name_id": "akar polinomial",
      "native_object_sha256": "afcc1a5f444ef207e2c2f3139045a352e4927b8d30b071e1e54a27ac75a2acea",
      "prerequisite_concept_ids": [
        "ttp.concept.polynomial_mod_p"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/polynomial_root",
      "term_ids": [
        "ttp.r014.term.217"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "preimage_resistance",
      "concept_id": "ttp.concept.preimage_resistance",
      "coverage_relation_ids": [
        "ttp.r014.relation.2795",
        "ttp.r014.relation.2811",
        "ttp.r014.relation.2827"
      ],
      "name_en": "pre-image resistance",
      "name_id": "ketahanan praimaji",
      "native_object_sha256": "999cbf9e3b058e16246da0f1fad1301123cbe32b86df7eca84444ddf91a4d64e",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/preimage_resistance",
      "term_ids": [
        "ttp.r014.term.187"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "primality_test",
      "concept_id": "ttp.concept.primality_test",
      "coverage_relation_ids": [
        "ttp.r014.relation.2479"
      ],
      "name_en": "primality test",
      "name_id": "uji keprimaan",
      "native_object_sha256": "468d4e31054a6db357b34015dd99e12461c0537baba67a1c06221983c7edf77a",
      "prerequisite_concept_ids": [
        "ttp.concept.prime",
        "ttp.concept.wilsons_theorem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-WT",
      "taxonomy_path": "mathematics/number-theory/primality_test",
      "term_ids": [
        "ttp.r014.term.108"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wt"
      ]
    },
    {
      "concept_code": "prime",
      "concept_id": "ttp.concept.prime",
      "coverage_relation_ids": [
        "ttp.r014.relation.2452",
        "ttp.r014.relation.2458",
        "ttp.r014.relation.2464",
        "ttp.r014.relation.2470"
      ],
      "name_en": "prime number",
      "name_id": "bilangan prima",
      "native_object_sha256": "3897ff9bb74d7e20b4ec0475c54d938aaa49270cb5aac34c743ba41e4ae470c6",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/prime",
      "term_ids": [
        "ttp.r014.term.099"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "prime_counting_function",
      "concept_id": "ttp.concept.prime_counting_function",
      "coverage_relation_ids": [
        "ttp.r014.relation.2690",
        "ttp.r014.relation.2720",
        "ttp.r014.relation.2750",
        "ttp.r014.relation.2780"
      ],
      "name_en": "prime-counting function",
      "name_id": "fungsi penghitung prima",
      "native_object_sha256": "2f52f4f864ac5f5a761f8c73e605340c03ce0f8e052e6d1066795e5b5d72215d",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/prime_counting_function",
      "term_ids": [
        "ttp.r014.term.172"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "prime_factorization",
      "concept_id": "ttp.concept.prime_factorization",
      "coverage_relation_ids": [
        "ttp.r014.relation.2454",
        "ttp.r014.relation.2460",
        "ttp.r014.relation.2466",
        "ttp.r014.relation.2472"
      ],
      "name_en": "prime factorization",
      "name_id": "faktorisasi prima",
      "native_object_sha256": "b7aebe7661ac82ee4381b3614ad0c1df41a193aea5f8e45ac3b8fa50091fae62",
      "prerequisite_concept_ids": [
        "ttp.concept.prime",
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/prime_factorization",
      "term_ids": [
        "ttp.r014.term.101"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "prime_number_theorem",
      "concept_id": "ttp.concept.prime_number_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2689",
        "ttp.r014.relation.2719",
        "ttp.r014.relation.2749",
        "ttp.r014.relation.2779"
      ],
      "name_en": "Prime Number Theorem",
      "name_id": "Teorema Bilangan Prima",
      "native_object_sha256": "c62b4257c3b110a18ad93a44aeafc3683d4bdb77aa915386253cd8830d67b5e1",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/prime_number_theorem",
      "term_ids": [
        "ttp.r014.term.171"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "primitive_root",
      "concept_id": "ttp.concept.primitive_root",
      "coverage_relation_ids": [
        "ttp.r014.relation.0132",
        "ttp.r014.relation.2864",
        "ttp.r014.relation.2871",
        "ttp.r014.relation.2878",
        "ttp.r014.relation.2885",
        "ttp.r014.relation.2892",
        "ttp.r014.relation.2899",
        "ttp.r014.relation.2906",
        "ttp.r014.relation.2913"
      ],
      "name_en": "primitive root",
      "name_id": "akar primitif",
      "native_object_sha256": "ccaea8eac7656e3912d1892a2b03109c88670412fcf17c217427618edec805c7",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/primitive_root",
      "term_ids": [
        "ttp.r014.term.017",
        "ttp.r014.term.214"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes",
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "primitive_root_count",
      "concept_id": "ttp.concept.primitive_root_count",
      "coverage_relation_ids": [
        "ttp.r014.relation.2865",
        "ttp.r014.relation.2872",
        "ttp.r014.relation.2879",
        "ttp.r014.relation.2886",
        "ttp.r014.relation.2893",
        "ttp.r014.relation.2900",
        "ttp.r014.relation.2907",
        "ttp.r014.relation.2914"
      ],
      "name_en": "number of primitive roots",
      "name_id": "banyaknya akar primitif",
      "native_object_sha256": "fc617635122d4eaec105e62a65d4c2a8c2e75086cc1052e4ec3116daa8eb317a",
      "prerequisite_concept_ids": [
        "ttp.concept.primitive_root",
        "ttp.concept.euler_phi_function"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/primitive_root_count",
      "term_ids": [
        "ttp.r014.term.215"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    },
    {
      "concept_code": "private_key",
      "concept_id": "ttp.concept.private_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2677",
        "ttp.r014.relation.2707",
        "ttp.r014.relation.2737",
        "ttp.r014.relation.2767"
      ],
      "name_en": "private key",
      "name_id": "kunci privat",
      "native_object_sha256": "0a13cdf813395a83622f9c250570ef426def3dd390bfe3d091894f34a1225453",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/private_key",
      "term_ids": [
        "ttp.r014.term.159"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "private_key_compromise",
      "concept_id": "ttp.concept.private_key_compromise",
      "coverage_relation_ids": [
        "ttp.r014.relation.2792",
        "ttp.r014.relation.2808",
        "ttp.r014.relation.2824"
      ],
      "name_en": "private-key compromise",
      "name_id": "kompromi kunci privat",
      "native_object_sha256": "b494115758082bc1db3cebbf1e7eb0ce54be8daa9927d8d36aef885543280d1d",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/private_key_compromise",
      "term_ids": [
        "ttp.r014.term.184"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "private_key_cryptosystem",
      "concept_id": "ttp.concept.private_key_cryptosystem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2671",
        "ttp.r014.relation.2701",
        "ttp.r014.relation.2731",
        "ttp.r014.relation.2761"
      ],
      "name_en": "private-key cryptosystem",
      "name_id": "kriptosistem kunci privat",
      "native_object_sha256": "2030d103e3ee83b2ac89bfa5abe95c8683d13f33b24528e5f89012a02753d48a",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/private_key_cryptosystem",
      "term_ids": [
        "ttp.r014.term.153"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "probabilistic_polynomial_time_turing_machine",
      "concept_id": "ttp.concept.probabilistic_polynomial_time_turing_machine",
      "coverage_relation_ids": [
        "ttp.r014.relation.2588",
        "ttp.r014.relation.2597",
        "ttp.r014.relation.2606",
        "ttp.r014.relation.2615"
      ],
      "name_en": "probabilistic polynomial-time Turing machine",
      "name_id": "mesin Turing waktu-polinomial probabilistik",
      "native_object_sha256": "39ecbc54e61229cec53799dcd38293c915888485de1b71d26fda7d4ca77365a4",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/probabilistic_polynomial_time_turing_machine",
      "term_ids": [
        "ttp.r014.term.136"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "proof_by_contradiction",
      "concept_id": "ttp.concept.proof_by_contradiction",
      "coverage_relation_ids": [
        "ttp.r014.relation.0150",
        "ttp.r014.relation.0156"
      ],
      "name_en": "proof by contradiction",
      "name_id": "bukti dengan kontradiksi",
      "native_object_sha256": "c71406e293a1b47b335ba5b6107a35e1dafa2fa618ebdddbec18803961c8c7f3",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-pigeonhole",
      "taxonomy_path": "mathematics/number-theory/proof_by_contradiction",
      "term_ids": [],
      "unit_ids": [
        "ttp.r014.unit.thm.pigeonhole.proof",
        "ttp.r014.unit.sec.wopami.theorem.induction.01.proof"
      ]
    },
    {
      "concept_code": "proper_divisor",
      "concept_id": "ttp.concept.proper_divisor",
      "coverage_relation_ids": [
        "ttp.r014.relation.2457",
        "ttp.r014.relation.2463",
        "ttp.r014.relation.2469",
        "ttp.r014.relation.2475"
      ],
      "name_en": "proper divisor",
      "name_id": "pembagi sejati",
      "native_object_sha256": "3e6a0d4e9211b3b7fc995335a817ef67be013835d5a7782a0dbd7c799302d645",
      "prerequisite_concept_ids": [
        "ttp.concept.divisibility"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/proper_divisor",
      "term_ids": [
        "ttp.r014.term.104"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "pseudorandom",
      "concept_id": "ttp.concept.pseudorandom",
      "coverage_relation_ids": [
        "ttp.r014.relation.2618",
        "ttp.r014.relation.2631",
        "ttp.r014.relation.2644",
        "ttp.r014.relation.2657"
      ],
      "name_en": "pseudorandom",
      "name_id": "acak semu",
      "native_object_sha256": "52d73ed2440390e10c4090fc14e34fd989629a8040e024fc4a9523bb8a9825d6",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/pseudorandom",
      "term_ids": [
        "ttp.r014.term.139"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "public_key",
      "concept_id": "ttp.concept.public_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2676",
        "ttp.r014.relation.2706",
        "ttp.r014.relation.2736",
        "ttp.r014.relation.2766"
      ],
      "name_en": "public key",
      "name_id": "kunci publik",
      "native_object_sha256": "372fb2c1299b0991c39d17e7d744a251b6edad9d3d5ac37466dcf26554ea89cf",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/public_key",
      "term_ids": [
        "ttp.r014.term.158"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "public_key_cryptosystem",
      "concept_id": "ttp.concept.public_key_cryptosystem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2678",
        "ttp.r014.relation.2708",
        "ttp.r014.relation.2738",
        "ttp.r014.relation.2768"
      ],
      "name_en": "public-key cryptosystem",
      "name_id": "kriptosistem kunci publik",
      "native_object_sha256": "2ac2330bf328c583c8953beb65e60de5aba36db92255848cf0027b3d78ae3b72",
      "prerequisite_concept_ids": [
        "ttp.concept.asymmetric_cipher",
        "ttp.concept.key_generation_algorithm"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/public_key_cryptosystem",
      "term_ids": [
        "ttp.r014.term.160"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "public_key_infrastructure",
      "concept_id": "ttp.concept.public_key_infrastructure",
      "coverage_relation_ids": [
        "ttp.r014.relation.2845"
      ],
      "name_en": "public key infrastructure (PKI)",
      "name_id": "infrastruktur kunci publik (PKI)",
      "native_object_sha256": "9c4ef36b22311d5e35974a131ec7675c409c905af73e2f66ad04c1e15cc17063",
      "prerequisite_concept_ids": [
        "ttp.concept.certification_path"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/public_key_infrastructure",
      "term_ids": [
        "ttp.r014.term.205"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "quantum_computer",
      "concept_id": "ttp.concept.quantum_computer",
      "coverage_relation_ids": [
        "ttp.r014.relation.2682",
        "ttp.r014.relation.2712",
        "ttp.r014.relation.2742",
        "ttp.r014.relation.2772"
      ],
      "name_en": "quantum computer",
      "name_id": "komputer kuantum",
      "native_object_sha256": "f9ba0f2024011a9d86c41262d7dbde6fa33d4029abec0399402c0e943e999268",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/quantum_computer",
      "term_ids": [
        "ttp.r014.term.164"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "quotient",
      "concept_id": "ttp.concept.quotient",
      "coverage_relation_ids": [
        "ttp.r014.relation.0316",
        "ttp.r014.relation.0322",
        "ttp.r014.relation.0326",
        "ttp.r014.relation.0329",
        "ttp.r014.relation.0402",
        "ttp.r014.relation.0417",
        "ttp.r014.relation.0603",
        "ttp.r014.relation.0719",
        "ttp.r014.relation.0731",
        "ttp.r014.relation.0738",
        "ttp.r014.relation.0753"
      ],
      "name_en": "quotient",
      "name_id": "hasil bagi",
      "native_object_sha256": "2e49acf3215df1733f028f7a3263098aaa13baa67c4a28d683410d1201546779",
      "prerequisite_concept_ids": [
        "ttp.concept.division_algorithm"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-theDA",
      "taxonomy_path": "mathematics/number-theory/quotient",
      "term_ids": [
        "ttp.r014.term.053"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.the-da",
        "ttp.r014.unit.eg.arithmetic",
        "ttp.r014.unit.sec.dada.exercise.02",
        "ttp.r014.unit.sec.dada.exercise.03",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.lem.gcdafterdivision",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.eg.ea"
      ]
    },
    {
      "concept_code": "reflexivity",
      "concept_id": "ttp.concept.reflexivity",
      "coverage_relation_ids": [
        "ttp.r014.relation.1297",
        "ttp.r014.relation.1310",
        "ttp.r014.relation.1318",
        "ttp.r014.relation.1330"
      ],
      "name_en": "reflexivity",
      "name_id": "refleksivitas",
      "native_object_sha256": "15364b9f741dd0c6e072a5314175123d5611ec942993017e4351d9305548cf43",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_relation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/reflexivity",
      "term_ids": [
        "ttp.r014.term.082"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal.proof",
        "ttp.r014.unit.prop.congruence-equivalence-relation"
      ]
    },
    {
      "concept_code": "relatively_prime",
      "concept_id": "ttp.concept.relatively_prime",
      "coverage_relation_ids": [
        "ttp.r014.relation.0552",
        "ttp.r014.relation.0564",
        "ttp.r014.relation.0566",
        "ttp.r014.relation.0573",
        "ttp.r014.relation.0576",
        "ttp.r014.relation.0606",
        "ttp.r014.relation.0608",
        "ttp.r014.relation.0617",
        "ttp.r014.relation.0620",
        "ttp.r014.relation.0624",
        "ttp.r014.relation.0634",
        "ttp.r014.relation.0637",
        "ttp.r014.relation.0640",
        "ttp.r014.relation.0644",
        "ttp.r014.relation.0895",
        "ttp.r014.relation.0897",
        "ttp.r014.relation.0900",
        "ttp.r014.relation.0913",
        "ttp.r014.relation.1085",
        "ttp.r014.relation.1094",
        "ttp.r014.relation.1098",
        "ttp.r014.relation.1103",
        "ttp.r014.relation.1187",
        "ttp.r014.relation.1382",
        "ttp.r014.relation.1386",
        "ttp.r014.relation.1475",
        "ttp.r014.relation.1478",
        "ttp.r014.relation.1482",
        "ttp.r014.relation.1497",
        "ttp.r014.relation.1500",
        "ttp.r014.relation.1514"
      ],
      "name_en": "relatively prime",
      "name_id": "relatif prima",
      "native_object_sha256": "37102721f300a7add87a32fde96595dfde1acac09551e0e1f4efee5410cf90d7",
      "prerequisite_concept_ids": [
        "ttp.concept.greatest_common_divisor"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#gcd",
      "taxonomy_path": "mathematics/number-theory/relatively_prime",
      "term_ids": [
        "ttp.r014.term.067"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.gcd",
        "ttp.r014.unit.sec.gcd.definition.relatively-prime",
        "ttp.r014.unit.eg.gcdb",
        "ttp.r014.unit.thm.dividebygcd",
        "ttp.r014.unit.thm.dividebygcd.proof",
        "ttp.r014.unit.sec.gcd.discussion.05",
        "ttp.r014.unit.cor.intlincombrelprime",
        "ttp.r014.unit.eg.mutrelprime",
        "ttp.r014.unit.sec.gcd.definition.pairwise-relatively-prime",
        "ttp.r014.unit.eg.pairwiserelprime",
        "ttp.r014.unit.sec.gcd.exercise.04",
        "ttp.r014.unit.sec.gcd.exercise.06",
        "ttp.r014.unit.sec.gcd.exercise.07",
        "ttp.r014.unit.sec.gcd.exercise.08",
        "ttp.r014.unit.sec.itc.discussion.03",
        "ttp.r014.unit.thm.combing",
        "ttp.r014.unit.thm.combing.proof",
        "ttp.r014.unit.lem.euclids",
        "ttp.r014.unit.rem.uniqsolnlincong",
        "ttp.r014.unit.sec.lc.discussion.05",
        "ttp.r014.unit.def.modularinverse",
        "ttp.r014.unit.cor.modinv",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.thm.plustimesproperties",
        "ttp.r014.unit.thm.plustimesproperties.proof",
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.sec.ephif.discussion.01",
        "ttp.r014.unit.def.euler-phi",
        "ttp.r014.unit.sec.ephif.discussion.03",
        "ttp.r014.unit.thm.phiismultiplicative",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "remainder",
      "concept_id": "ttp.concept.remainder",
      "coverage_relation_ids": [
        "ttp.r014.relation.0317",
        "ttp.r014.relation.0323",
        "ttp.r014.relation.0327",
        "ttp.r014.relation.0330",
        "ttp.r014.relation.0340",
        "ttp.r014.relation.0403",
        "ttp.r014.relation.0418",
        "ttp.r014.relation.0427",
        "ttp.r014.relation.0432",
        "ttp.r014.relation.0604",
        "ttp.r014.relation.0720",
        "ttp.r014.relation.0726",
        "ttp.r014.relation.0732",
        "ttp.r014.relation.0739",
        "ttp.r014.relation.0754",
        "ttp.r014.relation.0943",
        "ttp.r014.relation.1342",
        "ttp.r014.relation.1348"
      ],
      "name_en": "remainder",
      "name_id": "sisa pembagian",
      "native_object_sha256": "7a75e9adebd3be533e377b092fe6323f9aa9d35ad4e4ede19c7d24f7bb9709b9",
      "prerequisite_concept_ids": [
        "ttp.concept.division_algorithm"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#thm-theDA",
      "taxonomy_path": "mathematics/number-theory/remainder",
      "term_ids": [
        "ttp.r014.term.054"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.the-da",
        "ttp.r014.unit.eg.arithmetic",
        "ttp.r014.unit.sec.dada.exercise.02",
        "ttp.r014.unit.sec.dada.exercise.03",
        "ttp.r014.unit.sec.dada.exercise.10",
        "ttp.r014.unit.thm.basebexpansion.proof",
        "ttp.r014.unit.eg.basetwo",
        "ttp.r014.unit.sec.roiidb.exercise.01",
        "ttp.r014.unit.sec.roiidb.exercise.02",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.lem.gcdafterdivision",
        "ttp.r014.unit.sec.ea.discussion.02",
        "ttp.r014.unit.thm.euclideanalg",
        "ttp.r014.unit.thm.euclideanalg.proof",
        "ttp.r014.unit.eg.ea",
        "ttp.r014.unit.thm.numzerosmodafactor.proof",
        "ttp.r014.unit.thm.integers-mod-n-representatives",
        "ttp.r014.unit.thm.integers-mod-n-representatives.proof"
      ]
    },
    {
      "concept_code": "replay_attack",
      "concept_id": "ttp.concept.replay_attack",
      "coverage_relation_ids": [
        "ttp.r014.relation.2805",
        "ttp.r014.relation.2821",
        "ttp.r014.relation.2837"
      ],
      "name_en": "replay attack",
      "name_id": "serangan putar ulang",
      "native_object_sha256": "5b711adb9147308e96c880290565ad78fce0648e622baad030b1540609a4c856",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/replay_attack",
      "term_ids": [
        "ttp.r014.term.197"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "rot13",
      "concept_id": "ttp.concept.rot13",
      "coverage_relation_ids": [
        "ttp.r014.relation.2583",
        "ttp.r014.relation.2592",
        "ttp.r014.relation.2601",
        "ttp.r014.relation.2610"
      ],
      "name_en": "ROT13",
      "name_id": "ROT13",
      "native_object_sha256": "aa67f887a0f573412a780dd3076b6e6e698c6cff2ed21af90a13f5ea4d9a4136",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/rot13",
      "term_ids": [
        "ttp.r014.term.131"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "rsa",
      "concept_id": "ttp.concept.rsa",
      "coverage_relation_ids": [
        "ttp.r014.relation.0136"
      ],
      "name_en": "RSA cryptosystem",
      "name_id": "kriptosistem RSA",
      "native_object_sha256": "659393fc2d1391eb6439ab8edacb86521938cfb9e5bcf3080f7909a960affa8e",
      "prerequisite_concept_ids": [
        "ttp.concept.cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/-catatan-rilis.html#catatan-rilis",
      "taxonomy_path": "mathematics/number-theory/rsa",
      "term_ids": [
        "ttp.r014.term.013"
      ],
      "unit_ids": [
        "ttp.r014.unit.frontmatter.release-notes"
      ]
    },
    {
      "concept_code": "rsa_exponent",
      "concept_id": "ttp.concept.rsa_exponent",
      "coverage_relation_ids": [
        "ttp.r014.relation.2685",
        "ttp.r014.relation.2715",
        "ttp.r014.relation.2745",
        "ttp.r014.relation.2775"
      ],
      "name_en": "RSA exponent",
      "name_id": "eksponen RSA",
      "native_object_sha256": "eb32c8b64c6f6fd986ddd839c65742ca79aad2867ec11eec64a94fa3355adc2b",
      "prerequisite_concept_ids": [
        "ttp.concept.euler_phi_function",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/rsa_exponent",
      "term_ids": [
        "ttp.r014.term.167"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "rsa_modulus",
      "concept_id": "ttp.concept.rsa_modulus",
      "coverage_relation_ids": [
        "ttp.r014.relation.2683",
        "ttp.r014.relation.2713",
        "ttp.r014.relation.2743",
        "ttp.r014.relation.2773"
      ],
      "name_en": "RSA modulus",
      "name_id": "modulus RSA",
      "native_object_sha256": "6dfc49570bddc67c553fa88fdc2c62e1eb34d4dca4b5157907510a83047f2e99",
      "prerequisite_concept_ids": [
        "ttp.concept.prime_factorization"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/rsa_modulus",
      "term_ids": [
        "ttp.r014.term.165"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "rsa_private_key",
      "concept_id": "ttp.concept.rsa_private_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2687",
        "ttp.r014.relation.2717",
        "ttp.r014.relation.2747",
        "ttp.r014.relation.2777"
      ],
      "name_en": "RSA private decryption key",
      "name_id": "kunci privat RSA",
      "native_object_sha256": "c16dc7cfc216970345b8a75390002acf7b9baeb281d7498d2456d4f5eaf4494c",
      "prerequisite_concept_ids": [
        "ttp.concept.rsa_public_key",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/rsa_private_key",
      "term_ids": [
        "ttp.r014.term.169"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "rsa_public_key",
      "concept_id": "ttp.concept.rsa_public_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2686",
        "ttp.r014.relation.2716",
        "ttp.r014.relation.2746",
        "ttp.r014.relation.2776"
      ],
      "name_en": "RSA public encryption key",
      "name_id": "kunci publik RSA",
      "native_object_sha256": "191a58113b3ec5a60282fdabbd4d71cd19a8337fcefe648dc84a50bb572b86a6",
      "prerequisite_concept_ids": [
        "ttp.concept.rsa_modulus",
        "ttp.concept.rsa_exponent"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/rsa_public_key",
      "term_ids": [
        "ttp.r014.term.168"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "rsa_semiprime",
      "concept_id": "ttp.concept.rsa_semiprime",
      "coverage_relation_ids": [
        "ttp.r014.relation.2684",
        "ttp.r014.relation.2714",
        "ttp.r014.relation.2744",
        "ttp.r014.relation.2774"
      ],
      "name_en": "RSA semiprime",
      "name_id": "semiprima RSA",
      "native_object_sha256": "3c41fda3e87624fb660ed9c78e46b2fb02936596e88849e3438b9d6d86c57ca0",
      "prerequisite_concept_ids": [
        "ttp.concept.rsa_modulus"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/rsa_semiprime",
      "term_ids": [
        "ttp.r014.term.166"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "scytale",
      "concept_id": "ttp.concept.scytale",
      "coverage_relation_ids": [
        "ttp.r014.relation.2522",
        "ttp.r014.relation.2541",
        "ttp.r014.relation.2560",
        "ttp.r014.relation.2579"
      ],
      "name_en": "scytale",
      "name_id": "scytale",
      "native_object_sha256": "44766097504e196fbd24024404bb6d3d03a1e52a1edf3206c5bbb04192bb031b",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/scytale",
      "term_ids": [
        "ttp.r014.term.127"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "second_preimage_resistance",
      "concept_id": "ttp.concept.second_preimage_resistance",
      "coverage_relation_ids": [
        "ttp.r014.relation.2796",
        "ttp.r014.relation.2812",
        "ttp.r014.relation.2828"
      ],
      "name_en": "second pre-image resistance",
      "name_id": "ketahanan praimaji kedua",
      "native_object_sha256": "2a7e5ed061c610ec5e6a012fc8090ae276c8ee9b22a3420b30dd79d198ae6ba1",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/second_preimage_resistance",
      "term_ids": [
        "ttp.r014.term.188"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "security_through_obscurity",
      "concept_id": "ttp.concept.security_through_obscurity",
      "coverage_relation_ids": [
        "ttp.r014.relation.2524",
        "ttp.r014.relation.2543",
        "ttp.r014.relation.2562",
        "ttp.r014.relation.2581"
      ],
      "name_en": "security through obscurity",
      "name_id": "keamanan melalui ketertutupan",
      "native_object_sha256": "ce068dd82821eeee61d0d1635240e01a51b77e4bc9379908eb1adbf325ec5cda",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-SSH",
      "taxonomy_path": "computer-science/cryptography/security_through_obscurity",
      "term_ids": [
        "ttp.r014.term.129"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ssh",
        "ttp.r014.unit.sec.ssh.exercise.01",
        "ttp.r014.unit.sec.ssh.exercise.02",
        "ttp.r014.unit.sec.ssh.exercise.03"
      ]
    },
    {
      "concept_code": "self_inverse",
      "concept_id": "ttp.concept.self_inverse",
      "coverage_relation_ids": [
        "ttp.r014.relation.2477"
      ],
      "name_en": "self-inverse modulo p",
      "name_id": "merupakan invers bagi dirinya sendiri modulo p",
      "native_object_sha256": "c74a3f31ca12cf2abb168497313f37a05b81b79403870c8ae8c2a685ce3a85ae",
      "prerequisite_concept_ids": [
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-WT",
      "taxonomy_path": "mathematics/number-theory/self_inverse",
      "term_ids": [
        "ttp.r014.term.106"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wt"
      ]
    },
    {
      "concept_code": "semantic_security",
      "concept_id": "ttp.concept.semantic_security",
      "coverage_relation_ids": [
        "ttp.r014.relation.2964",
        "ttp.r014.relation.2974",
        "ttp.r014.relation.2984",
        "ttp.r014.relation.2994"
      ],
      "name_en": "semantic security",
      "name_id": "keamanan semantik",
      "native_object_sha256": "a5f7f8e2a7b02be30ced79e039c917b9ad74fdf69f90ae63e976364cf1840da3",
      "prerequisite_concept_ids": [
        "ttp.concept.elgamal_cryptosystem"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-tEGC",
      "taxonomy_path": "computer-science/cryptography/semantic_security",
      "term_ids": [
        "ttp.r014.term.238"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.tegc",
        "ttp.r014.unit.id-id.sec.tegc.exercise.01",
        "ttp.r014.unit.id-id.sec.tegc.exercise.02",
        "ttp.r014.unit.id-id.sec.tegc.exercise.03"
      ]
    },
    {
      "concept_code": "sexagesimal",
      "concept_id": "ttp.concept.sexagesimal",
      "coverage_relation_ids": [
        "ttp.r014.relation.0392",
        "ttp.r014.relation.0412"
      ],
      "name_en": "sexagesimal",
      "name_id": "seksagesimal",
      "native_object_sha256": "f05c247dbf5362b4f60f8f2db0bba22c55207ea483e4e876c3b6e16036d5e753",
      "prerequisite_concept_ids": [
        "ttp.concept.base_representation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#def-baseb",
      "taxonomy_path": "mathematics/number-theory/sexagesimal",
      "term_ids": [
        "ttp.r014.term.063"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.roiidb.discussion.01",
        "ttp.r014.unit.def.baseb"
      ]
    },
    {
      "concept_code": "shared_secret",
      "concept_id": "ttp.concept.shared_secret",
      "coverage_relation_ids": [
        "ttp.r014.relation.2934",
        "ttp.r014.relation.2940",
        "ttp.r014.relation.2946",
        "ttp.r014.relation.2952"
      ],
      "name_en": "shared secret / shared key",
      "name_id": "rahasia bersama / kunci bersama",
      "native_object_sha256": "f64a4a6fcb90a20bccb228aaf55f8b2919662c52049e0ac21abb0baf518af2db",
      "prerequisite_concept_ids": [
        "ttp.concept.diffie_hellman_key_exchange"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "computer-science/cryptography/shared_secret",
      "term_ids": [
        "ttp.r014.term.226"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "signature_encoding",
      "concept_id": "ttp.concept.signature_encoding",
      "coverage_relation_ids": [
        "ttp.r014.relation.2802",
        "ttp.r014.relation.2818",
        "ttp.r014.relation.2834"
      ],
      "name_en": "signature encoding",
      "name_id": "enkode tanda tangan",
      "native_object_sha256": "614a90bed3a3af1f79d402ed8cf4e3b33b7a3a7853234c5bdfe53d60d0ec2051",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/signature_encoding",
      "term_ids": [
        "ttp.r014.term.194"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "signature_unforgeability",
      "concept_id": "ttp.concept.signature_unforgeability",
      "coverage_relation_ids": [
        "ttp.r014.relation.2791",
        "ttp.r014.relation.2807",
        "ttp.r014.relation.2823"
      ],
      "name_en": "signature unforgeability",
      "name_id": "ketahanan terhadap pemalsuan tanda tangan",
      "native_object_sha256": "5b1bc7d3fdc39b0f3db9e4f917dcc353c213cb1fe3944f630947bdd494b8fa56",
      "prerequisite_concept_ids": [
        "ttp.concept.digital_signature"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/signature_unforgeability",
      "term_ids": [
        "ttp.r014.term.183"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "signing_key",
      "concept_id": "ttp.concept.signing_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2800",
        "ttp.r014.relation.2816",
        "ttp.r014.relation.2832"
      ],
      "name_en": "signing key",
      "name_id": "kunci penandatanganan",
      "native_object_sha256": "e4bbad050245f8826d2e769fbbb8d1812707e5081e33681ca4ee67523f8b1f15",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/signing_key",
      "term_ids": [
        "ttp.r014.term.192"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "sophie_germain_prime",
      "concept_id": "ttp.concept.sophie_germain_prime",
      "coverage_relation_ids": [
        "ttp.r014.relation.2935",
        "ttp.r014.relation.2941",
        "ttp.r014.relation.2947",
        "ttp.r014.relation.2953"
      ],
      "name_en": "Sophie Germain prime",
      "name_id": "prima Sophie Germain",
      "native_object_sha256": "b87acdce4b765e486893f31dde9003de3bcdbde5a883f3c24a45de7bee86d5fc",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-DHKE",
      "taxonomy_path": "mathematics/number-theory/sophie_germain_prime",
      "term_ids": [
        "ttp.r014.term.227"
      ],
      "unit_ids": [
        "ttp.r014.unit.id-id.sec.dhke",
        "ttp.r014.unit.id-id.sec.dhke.exercise.01",
        "ttp.r014.unit.id-id.sec.dhke.exercise.02",
        "ttp.r014.unit.id-id.sec.dhke.exercise.03"
      ]
    },
    {
      "concept_code": "square_free",
      "concept_id": "ttp.concept.square_free",
      "coverage_relation_ids": [
        "ttp.r014.relation.2456",
        "ttp.r014.relation.2462",
        "ttp.r014.relation.2468",
        "ttp.r014.relation.2474"
      ],
      "name_en": "square-free",
      "name_id": "bebas kuadrat",
      "native_object_sha256": "fdc7a56c5b27248e544d909ee7bca28d9373e4d80fee194819bed0bb2addab2d",
      "prerequisite_concept_ids": [
        "ttp.concept.prime_factorization"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-BatFTA",
      "taxonomy_path": "mathematics/number-theory/square_free",
      "term_ids": [
        "ttp.r014.term.103"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.batfta",
        "ttp.r014.unit.sec.batfta.exercise.01",
        "ttp.r014.unit.sec.batfta.exercise.02",
        "ttp.r014.unit.sec.batfta.exercise.03"
      ]
    },
    {
      "concept_code": "strong_induction",
      "concept_id": "ttp.concept.strong_induction",
      "coverage_relation_ids": [
        "ttp.r014.relation.0161",
        "ttp.r014.relation.0163"
      ],
      "name_en": "strong induction / second principle",
      "name_id": "induksi kuat / prinsip kedua",
      "native_object_sha256": "f2e65df70a72ed48e204a90fe9b61d76be8160e3a2eabf275c8245a0d050f62a",
      "prerequisite_concept_ids": [
        "ttp.concept.mathematical_induction"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#prinsip-induksi-matematika",
      "taxonomy_path": "mathematics/number-theory/strong_induction",
      "term_ids": [
        "ttp.r014.term.005"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.theorem.induction.02",
        "ttp.r014.unit.sec.wopami.theorem.induction.02.proof"
      ]
    },
    {
      "concept_code": "subtraction",
      "concept_id": "ttp.concept.subtraction",
      "coverage_relation_ids": [
        "ttp.r014.relation.0196",
        "ttp.r014.relation.0639",
        "ttp.r014.relation.0886",
        "ttp.r014.relation.0891",
        "ttp.r014.relation.0906"
      ],
      "name_en": "subtraction",
      "name_id": "pengurangan",
      "native_object_sha256": "10f0ee98468377b2711967a603003d6de569897e6575eedecd08c2247acdb514",
      "prerequisite_concept_ids": [
        "ttp.concept.addition",
        "ttp.concept.additive_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-AOwI",
      "taxonomy_path": "mathematics/number-theory/subtraction",
      "term_ids": [
        "ttp.r014.term.044"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.aowi",
        "ttp.r014.unit.sec.gcd.exercise.06",
        "ttp.r014.unit.thm.basiccongprops",
        "ttp.r014.unit.thm.basiccongprops.proof",
        "ttp.r014.unit.eg.congarith"
      ]
    },
    {
      "concept_code": "surjective",
      "concept_id": "ttp.concept.surjective",
      "coverage_relation_ids": [
        "ttp.r014.relation.1507"
      ],
      "name_en": "surjective",
      "name_id": "surjektif",
      "native_object_sha256": "e80f2250061e77b403d42b8c185ddcddfe3772713d1ac51d15b4f8392dc190fe",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#thm-phiismultiplicative",
      "taxonomy_path": "mathematics/number-theory/surjective",
      "term_ids": [
        "ttp.r014.term.094"
      ],
      "unit_ids": [
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "symmetric_cipher",
      "concept_id": "ttp.concept.symmetric_cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2670",
        "ttp.r014.relation.2700",
        "ttp.r014.relation.2730",
        "ttp.r014.relation.2760"
      ],
      "name_en": "symmetric cipher / cryptosystem / encryption",
      "name_id": "cipher / kriptosistem / enkripsi simetris",
      "native_object_sha256": "d7ecfde7995eabbd7ed2d7cc2244bdac352cad3c907fc17cf907bf27a2ed50c6",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/symmetric_cipher",
      "term_ids": [
        "ttp.r014.term.152"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "symmetry",
      "concept_id": "ttp.concept.symmetry",
      "coverage_relation_ids": [
        "ttp.r014.relation.1298",
        "ttp.r014.relation.1311",
        "ttp.r014.relation.1319",
        "ttp.r014.relation.1331"
      ],
      "name_en": "symmetry",
      "name_id": "simetri",
      "native_object_sha256": "f4fc3407c200d0fc8dba1c3f13e62776ad54f9c6b92ab72ee30a284c0719c9d0",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_relation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/symmetry",
      "term_ids": [
        "ttp.r014.term.083"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal.proof",
        "ttp.r014.unit.prop.congruence-equivalence-relation"
      ]
    },
    {
      "concept_code": "system_of_congruences",
      "concept_id": "ttp.concept.system_of_congruences",
      "coverage_relation_ids": [
        "ttp.r014.relation.1167",
        "ttp.r014.relation.1172",
        "ttp.r014.relation.1177",
        "ttp.r014.relation.1184",
        "ttp.r014.relation.1194",
        "ttp.r014.relation.1199",
        "ttp.r014.relation.1201",
        "ttp.r014.relation.1205",
        "ttp.r014.relation.1208",
        "ttp.r014.relation.1211",
        "ttp.r014.relation.1216",
        "ttp.r014.relation.1410",
        "ttp.r014.relation.1511"
      ],
      "name_en": "system of congruences",
      "name_id": "sistem kongruensi",
      "native_object_sha256": "adedac612cfa66e367c35432e1ba9c931ca9bb2ab67776150eff9f6fa1d5e417",
      "prerequisite_concept_ids": [
        "ttp.concept.congruence",
        "ttp.concept.modulo"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-CRT",
      "taxonomy_path": "mathematics/number-theory/system_of_congruences",
      "term_ids": [
        "ttp.r014.term.080"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.crt",
        "ttp.r014.unit.sec.crt.discussion.01",
        "ttp.r014.unit.thm.chinese-remainder",
        "ttp.r014.unit.thm.chinese-remainder.proof",
        "ttp.r014.unit.eg.systemofcongs",
        "ttp.r014.unit.sec.crt.exercises",
        "ttp.r014.unit.sec.crt.exercise.01",
        "ttp.r014.unit.sec.crt.exercise.02",
        "ttp.r014.unit.sec.crt.exercise.03",
        "ttp.r014.unit.sec.crt.exercise.04",
        "ttp.r014.unit.sec.awtwwc.exercise.02",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "total_square_error",
      "concept_id": "ttp.concept.total_square_error",
      "coverage_relation_ids": [
        "ttp.r014.relation.2625",
        "ttp.r014.relation.2638",
        "ttp.r014.relation.2651",
        "ttp.r014.relation.2664"
      ],
      "name_en": "total square error",
      "name_id": "galat kuadrat total",
      "native_object_sha256": "5a754fa81cb45167963ede16a15cfb9b0ed306949dc0aac0d92ff8022f897e59",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/total_square_error",
      "term_ids": [
        "ttp.r014.term.146"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "traffic_analysis",
      "concept_id": "ttp.concept.traffic_analysis",
      "coverage_relation_ids": [
        "ttp.r014.relation.2680",
        "ttp.r014.relation.2710",
        "ttp.r014.relation.2740",
        "ttp.r014.relation.2770"
      ],
      "name_en": "traffic analysis",
      "name_id": "analisis lalu lintas",
      "native_object_sha256": "2364f083fdbed3b695739c181c5d08f2704a9ab2cab32b7980f5e7ae338d1778",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/traffic_analysis",
      "term_ids": [
        "ttp.r014.term.162"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "transitivity",
      "concept_id": "ttp.concept.transitivity",
      "coverage_relation_ids": [
        "ttp.r014.relation.1299",
        "ttp.r014.relation.1312",
        "ttp.r014.relation.1320",
        "ttp.r014.relation.1332"
      ],
      "name_en": "transitivity",
      "name_id": "transitivitas",
      "native_object_sha256": "939d210c986e8b0444253a3b7e6c46b4fc12f3ed9e5c7c0edd6908cba360dd99",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_relation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/transitivity",
      "term_ids": [
        "ttp.r014.term.084"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.equivalence-relation",
        "ttp.r014.unit.thm.equivalence-classes-disjoint-or-equal.proof",
        "ttp.r014.unit.prop.congruence-equivalence-relation"
      ]
    },
    {
      "concept_code": "trust_anchor",
      "concept_id": "ttp.concept.trust_anchor",
      "coverage_relation_ids": [
        "ttp.r014.relation.2843"
      ],
      "name_en": "trust anchor",
      "name_id": "jangkar kepercayaan",
      "native_object_sha256": "7ec29787b136544bc776fc343e3a538e1c3da3c83d5d54e2f955e733f33fda97",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/trust_anchor",
      "term_ids": [
        "ttp.r014.term.203"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "trusted_third_party",
      "concept_id": "ttp.concept.trusted_third_party",
      "coverage_relation_ids": [
        "ttp.r014.relation.2840"
      ],
      "name_en": "trusted third party (TTP)",
      "name_id": "pihak ketiga tepercaya (TTP)",
      "native_object_sha256": "bae392564c10f228cb688688a441b197e5705a29c16dc5b3ef8180b3af833e87",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/trusted_third_party",
      "term_ids": [
        "ttp.r014.term.200"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "unicode",
      "concept_id": "ttp.concept.unicode",
      "coverage_relation_ids": [
        "ttp.r014.relation.2697",
        "ttp.r014.relation.2727",
        "ttp.r014.relation.2757",
        "ttp.r014.relation.2787"
      ],
      "name_en": "Unicode",
      "name_id": "Unicode",
      "native_object_sha256": "c1082af16d45843083ea003954ce1440c2db2bc623db27e6510d63aaba45ef08",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/unicode",
      "term_ids": [
        "ttp.r014.term.179"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "unit_group",
      "concept_id": "ttp.concept.unit_group",
      "coverage_relation_ids": [
        "ttp.r014.relation.1473",
        "ttp.r014.relation.1485",
        "ttp.r014.relation.1489",
        "ttp.r014.relation.1493",
        "ttp.r014.relation.1509"
      ],
      "name_en": "unit group",
      "name_id": "grup unit",
      "native_object_sha256": "0795cfab6de389e112a2c71dd252fd5b63106ad57873b7f0c40ac61fbd561b8f",
      "prerequisite_concept_ids": [
        "ttp.concept.integers_mod_n",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-EphiF",
      "taxonomy_path": "mathematics/number-theory/unit_group",
      "term_ids": [
        "ttp.r014.term.096"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ephif",
        "ttp.r014.unit.sec.ephif.discussion.02",
        "ttp.r014.unit.thm.euler-phi-counts-units",
        "ttp.r014.unit.thm.euler-phi-counts-units.proof",
        "ttp.r014.unit.thm.phiismultiplicative.proof"
      ]
    },
    {
      "concept_code": "unit_group_modulo",
      "concept_id": "ttp.concept.unit_group_modulo",
      "coverage_relation_ids": [
        "ttp.r014.relation.2695",
        "ttp.r014.relation.2725",
        "ttp.r014.relation.2755",
        "ttp.r014.relation.2785"
      ],
      "name_en": "multiplicative unit group modulo n",
      "name_id": "grup satuan multiplikatif modulo n",
      "native_object_sha256": "6ef87429ffce50d7ad2c1a15f10e4ed219a75660e981513173a217b349489dcf",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "mathematics/number-theory/unit_group_modulo",
      "term_ids": [
        "ttp.r014.term.177"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "utf16",
      "concept_id": "ttp.concept.utf16",
      "coverage_relation_ids": [
        "ttp.r014.relation.2699",
        "ttp.r014.relation.2729",
        "ttp.r014.relation.2759",
        "ttp.r014.relation.2789"
      ],
      "name_en": "UTF-16",
      "name_id": "UTF-16",
      "native_object_sha256": "385cf982a2752a2ac43ff8fe46a8bc407f73bb56b9615a8ac8de960a08207758",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/utf16",
      "term_ids": [
        "ttp.r014.term.181"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "utf8",
      "concept_id": "ttp.concept.utf8",
      "coverage_relation_ids": [
        "ttp.r014.relation.2698",
        "ttp.r014.relation.2728",
        "ttp.r014.relation.2758",
        "ttp.r014.relation.2788"
      ],
      "name_en": "UTF-8",
      "name_id": "UTF-8",
      "native_object_sha256": "f38bcecd6013ef6aefa1783cc20b2a4cff2cda98082790a2b0dcfd71e1cf2b3f",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-tRSAC",
      "taxonomy_path": "computer-science/cryptography/utf8",
      "term_ids": [
        "ttp.r014.term.180"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.rsa",
        "ttp.r014.unit.sec.rsa.exercise.01",
        "ttp.r014.unit.sec.rsa.exercise.02",
        "ttp.r014.unit.sec.rsa.exercise.03"
      ]
    },
    {
      "concept_code": "verification_key",
      "concept_id": "ttp.concept.verification_key",
      "coverage_relation_ids": [
        "ttp.r014.relation.2801",
        "ttp.r014.relation.2817",
        "ttp.r014.relation.2833"
      ],
      "name_en": "verification key",
      "name_id": "kunci verifikasi",
      "native_object_sha256": "1425b6136866a12269a5cbc7ee781a5b7f281fa7f7c794d25ff02a295649c843",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-DSs",
      "taxonomy_path": "computer-science/cryptography/verification_key",
      "term_ids": [
        "ttp.r014.term.193"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.digital-signatures",
        "ttp.r014.unit.sec.digital-signatures.exercise.01",
        "ttp.r014.unit.sec.digital-signatures.exercise.02"
      ]
    },
    {
      "concept_code": "vernam_cipher",
      "concept_id": "ttp.concept.vernam_cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2586",
        "ttp.r014.relation.2595",
        "ttp.r014.relation.2604",
        "ttp.r014.relation.2613"
      ],
      "name_en": "Vernam Cipher",
      "name_id": "Cipher Vernam",
      "native_object_sha256": "add0b49cedc50db18a404d3d8f46b11314e06a38c0131a84240ea03e0a7a254f",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/vernam_cipher",
      "term_ids": [
        "ttp.r014.term.134"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "vigenere_cipher",
      "concept_id": "ttp.concept.vigenere_cipher",
      "coverage_relation_ids": [
        "ttp.r014.relation.2584",
        "ttp.r014.relation.2593",
        "ttp.r014.relation.2602",
        "ttp.r014.relation.2611"
      ],
      "name_en": "Vigenère cipher",
      "name_id": "cipher Vigenère",
      "native_object_sha256": "664b9b47d26b3885c0a13f5a04dd56a8b1de608b120c0d4fa17f4a06bb7baa0d",
      "prerequisite_concept_ids": [
        "ttp.concept.caesar_cipher"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-CCaIV",
      "taxonomy_path": "computer-science/cryptography/vigenere_cipher",
      "term_ids": [
        "ttp.r014.term.132"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.ccaiv",
        "ttp.r014.unit.sec.ccaiv.exercise.01",
        "ttp.r014.unit.sec.ccaiv.exercise.02",
        "ttp.r014.unit.sec.ccaiv.exercise.03"
      ]
    },
    {
      "concept_code": "web_of_trust",
      "concept_id": "ttp.concept.web_of_trust",
      "coverage_relation_ids": [
        "ttp.r014.relation.2846"
      ],
      "name_en": "web of trust",
      "name_id": "jejaring kepercayaan",
      "native_object_sha256": "0f139c8ebcc73b572c6201e2934ce98204a4254486240b62893d904a36088bed",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-MitMAaPKI",
      "taxonomy_path": "computer-science/cryptography/web_of_trust",
      "term_ids": [
        "ttp.r014.term.206"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.mitm-certificates-trust"
      ]
    },
    {
      "concept_code": "weighted_mixture",
      "concept_id": "ttp.concept.weighted_mixture",
      "coverage_relation_ids": [
        "ttp.r014.relation.2630",
        "ttp.r014.relation.2643",
        "ttp.r014.relation.2656",
        "ttp.r014.relation.2669"
      ],
      "name_en": "weighted mixture",
      "name_id": "campuran berbobot",
      "native_object_sha256": "255d9b8382b05fe5d0570c65047274439cee2b5241a4cf173c26c59f4557a3d9",
      "prerequisite_concept_ids": [],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/4-chap-Crypto.html#sec-FSiCFA",
      "taxonomy_path": "computer-science/cryptography/weighted_mixture",
      "term_ids": [
        "ttp.r014.term.151"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.frequency",
        "ttp.r014.unit.sec.frequency.exercise.01",
        "ttp.r014.unit.sec.frequency.exercise.02",
        "ttp.r014.unit.sec.frequency.exercise.03"
      ]
    },
    {
      "concept_code": "well_defined",
      "concept_id": "ttp.concept.well_defined",
      "coverage_relation_ids": [
        "ttp.r014.relation.1303",
        "ttp.r014.relation.1356",
        "ttp.r014.relation.1358",
        "ttp.r014.relation.1364",
        "ttp.r014.relation.1408"
      ],
      "name_en": "well-defined",
      "name_id": "terdefinisi dengan baik",
      "native_object_sha256": "f732dc74c3d2cfaaad5a2e1abedfa542f9d0b49f3c1e12bfcf69b250a9d3f023",
      "prerequisite_concept_ids": [
        "ttp.concept.equivalence_class",
        "ttp.concept.binary_operation"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/2-chap-Cs.html#sec-AWtWwC",
      "taxonomy_path": "mathematics/number-theory/well_defined",
      "term_ids": [
        "ttp.r014.term.088"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.awtwwc",
        "ttp.r014.unit.def.congruence-class-operations",
        "ttp.r014.unit.thm.plustimeswelldefined",
        "ttp.r014.unit.thm.plustimeswelldefined.proof",
        "ttp.r014.unit.sec.awtwwc.exercise.01"
      ]
    },
    {
      "concept_code": "well_ordering_principle",
      "concept_id": "ttp.concept.well_ordering_principle",
      "coverage_relation_ids": [
        "ttp.r014.relation.0140",
        "ttp.r014.relation.0144",
        "ttp.r014.relation.0155",
        "ttp.r014.relation.0319",
        "ttp.r014.relation.0601",
        "ttp.r014.relation.0743"
      ],
      "name_en": "well-ordering principle",
      "name_id": "prinsip keterurutan baik",
      "native_object_sha256": "a3b891fd1c92879b1eea4f4b2ace88612c34838ce032f2dc937aed5b9fd452c5",
      "prerequisite_concept_ids": [
        "ttp.concept.least_element",
        "ttp.concept.natural_number"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/1-chap-WOaD.html#sec-WOPaMI",
      "taxonomy_path": "mathematics/number-theory/well_ordering_principle",
      "term_ids": [
        "ttp.r014.term.001"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wopami.discussion.01",
        "ttp.r014.unit.sec.wopami.principle.well-ordering",
        "ttp.r014.unit.sec.wopami.theorem.induction.01.proof",
        "ttp.r014.unit.thm.the-da.proof",
        "ttp.r014.unit.thm.gcdislincomb.proof",
        "ttp.r014.unit.thm.euclideanalg.proof"
      ]
    },
    {
      "concept_code": "wilsons_theorem",
      "concept_id": "ttp.concept.wilsons_theorem",
      "coverage_relation_ids": [
        "ttp.r014.relation.2476"
      ],
      "name_en": "Wilson's Theorem",
      "name_id": "Teorema Wilson",
      "native_object_sha256": "df12e2541547ddcbe11d85df3dac1f2877d4c132b3bb82a7afaa5410db576303",
      "prerequisite_concept_ids": [
        "ttp.concept.prime",
        "ttp.concept.modular_inverse"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/3-chap-PNs.html#sec-WT",
      "taxonomy_path": "mathematics/number-theory/wilsons_theorem",
      "term_ids": [
        "ttp.r014.term.105"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.wt"
      ]
    },
    {
      "concept_code": "zero_product_property",
      "concept_id": "ttp.concept.zero_product_property",
      "coverage_relation_ids": [
        "ttp.r014.relation.2868",
        "ttp.r014.relation.2875",
        "ttp.r014.relation.2882",
        "ttp.r014.relation.2889",
        "ttp.r014.relation.2896",
        "ttp.r014.relation.2903",
        "ttp.r014.relation.2910",
        "ttp.r014.relation.2917"
      ],
      "name_en": "zero-product property",
      "name_id": "sifat hasil kali nol",
      "native_object_sha256": "c5e79b7c06707ad883bbeb69772ebb81ccf9dd742bd71e839efea386a59d56f6",
      "prerequisite_concept_ids": [
        "ttp.concept.polynomial_mod_p"
      ],
      "primary_reader_url": "https://kokunoyumeto.github.io/yet-another-introductory-number-theory-textbook-id/reader/5-chap-IeqDL.html#sec-PR",
      "taxonomy_path": "mathematics/number-theory/zero_product_property",
      "term_ids": [
        "ttp.r014.term.218"
      ],
      "unit_ids": [
        "ttp.r014.unit.sec.primitive-roots",
        "ttp.r014.unit.sec.primitive-roots.exercise.01",
        "ttp.r014.unit.sec.primitive-roots.exercise.02",
        "ttp.r014.unit.sec.primitive-roots.exercise.03",
        "ttp.r014.unit.sec.primitive-roots.exercise.04",
        "ttp.r014.unit.sec.primitive-roots.exercise.05",
        "ttp.r014.unit.sec.primitive-roots.exercise.06",
        "ttp.r014.unit.sec.primitive-roots.exercise.07"
      ]
    }
  ],
  "concepts_with_reader_routes": 223,
  "course_id": "C60",
  "schema": "c60-concept-index/1"
}
