{
  "schemaVersion": 1,
  "defaultScope": "section-2-1",
  "chapters": [
    {
      "id": "compulsory-1-ch1",
      "book": "必修一",
      "number": 1,
      "label": "集合与常用逻辑用语",
      "strand": "preliminary",
      "recorded": true,
      "node": "chapter-sets-logic",
      "sections": [
        {
          "id": "section-1-5",
          "number": "1.5",
          "label": "全称量词与存在量词"
        }
      ]
    },
    {
      "id": "compulsory-1-ch2",
      "book": "必修一",
      "number": 2,
      "label": "一元二次函数、方程和不等式",
      "strand": "preliminary",
      "recorded": true,
      "node": "chapter-quadratic-equations-inequalities",
      "sections": [
        {
          "id": "section-2-1",
          "number": "2.1",
          "label": "等式性质与不等式性质"
        },
        {
          "id": "section-2-2",
          "number": "2.2",
          "label": "基本不等式"
        },
        {
          "id": "section-2-3",
          "number": "2.3",
          "label": "二次函数与一元二次方程、不等式"
        }
      ]
    },
    {
      "id": "compulsory-1-ch3",
      "book": "必修一",
      "number": 3,
      "label": "函数的概念与性质",
      "strand": "function",
      "recorded": true,
      "node": "chapter-functions",
      "sections": [
        {
          "id": "section-3-2",
          "number": "3.2",
          "label": "函数的基本性质"
        }
      ]
    },
    {
      "id": "compulsory-1-ch4",
      "book": "必修一",
      "number": 4,
      "label": "指数函数与对数函数",
      "strand": "function",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-1-ch5",
      "book": "必修一",
      "number": 5,
      "label": "三角函数",
      "strand": "function",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-2-ch6",
      "book": "必修二",
      "number": 6,
      "label": "平面向量及其应用",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-2-ch7",
      "book": "必修二",
      "number": 7,
      "label": "复数",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-2-ch8",
      "book": "必修二",
      "number": 8,
      "label": "立体几何初步",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-2-ch9",
      "book": "必修二",
      "number": 9,
      "label": "统计",
      "strand": "probability-statistics",
      "recorded": false,
      "sections": []
    },
    {
      "id": "compulsory-2-ch10",
      "book": "必修二",
      "number": 10,
      "label": "概率",
      "strand": "probability-statistics",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-1-ch1",
      "book": "选必一",
      "number": 1,
      "label": "空间向量与立体几何",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-1-ch2",
      "book": "选必一",
      "number": 2,
      "label": "直线和圆的方程",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-1-ch3",
      "book": "选必一",
      "number": 3,
      "label": "圆锥曲线的方程",
      "strand": "geometry-algebra",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-2-ch4",
      "book": "选必二",
      "number": 4,
      "label": "数列",
      "strand": "function",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-2-ch5",
      "book": "选必二",
      "number": 5,
      "label": "一元函数的导数及其应用",
      "strand": "function",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-3-ch6",
      "book": "选必三",
      "number": 6,
      "label": "计数原理",
      "strand": "probability-statistics",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-3-ch7",
      "book": "选必三",
      "number": 7,
      "label": "随机变量及其分布",
      "strand": "probability-statistics",
      "recorded": false,
      "sections": []
    },
    {
      "id": "elective-3-ch8",
      "book": "选必三",
      "number": 8,
      "label": "成对数据的统计分析",
      "strand": "probability-statistics",
      "recorded": false,
      "sections": []
    }
  ],
  "nodes": [
    {
      "id": "amgm-formula",
      "kind": "knowledge",
      "label": "基本不等式",
      "summary": "两个正数的算术平均数不小于几何平均数；用于最值时还需确认定值与取等可达。",
      "aliases": [
        "均值不等式",
        "AM-GM"
      ],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "chapter-functions",
      "kind": "chapter",
      "label": "第三章 函数的概念与性质",
      "summary": "本章尚未完整录入；目前只登记 3.2 中被第二章引用的函数单调性与最值。",
      "aliases": [],
      "home": "compulsory-1-ch3"
    },
    {
      "id": "chapter-quadratic-equations-inequalities",
      "kind": "chapter",
      "label": "第二章 一元二次函数、方程和不等式",
      "summary": "由 2.1、2.2、2.3 三节组织知识、技能、题型与方法；本章范围由所属节汇总。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "chapter-sets-logic",
      "kind": "chapter",
      "label": "第一章 集合与常用逻辑用语",
      "summary": "本章尚未完整录入；目前只登记 1.5 中被第二章引用的全称量词与存在量词。",
      "aliases": [],
      "home": "compulsory-1-ch1"
    },
    {
      "id": "equality-properties",
      "kind": "knowledge",
      "label": "等式的性质",
      "summary": "等式可经合法运算推导新等式；逆向使用时要检查非零、定义域等条件。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "function-monotonicity",
      "kind": "knowledge",
      "label": "函数的单调性",
      "summary": "在指定区间上用自变量与函数值的次序描述增减，必须同时说明适用区间。",
      "aliases": [],
      "home": "compulsory-1-ch3"
    },
    {
      "id": "function-range-extrema",
      "kind": "knowledge",
      "label": "函数的值域与最值",
      "summary": "值域是所有实际函数值的集合；最大值、最小值必须属于这个集合。",
      "aliases": [],
      "home": "compulsory-1-ch3"
    },
    {
      "id": "inequality-properties",
      "kind": "knowledge",
      "label": "不等式的性质",
      "summary": "不等式的方向随运算条件变化，同乘或同除负数必须改变方向。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "linear-interval-extremum",
      "kind": "knowledge",
      "label": "一次函数",
      "summary": "一次函数由斜率控制增减；斜率为零时按常函数处理。",
      "aliases": [
        "一次函数的图像与性质"
      ],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-amgm-direct",
      "kind": "method",
      "label": "基本不等式法",
      "summary": "把要求最值的式子凑成两个正数相加（积是定值）或相乘（和是定值），用基本不等式求出界，再验证等号取得到。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "prepare",
          "title": "把式子凑成两项",
          "calls": [
            "method-matching",
            "method-substitution",
            "method-elimination",
            "method-fraction-split",
            "method-homogeneous"
          ]
        },
        {
          "id": "check",
          "title": "检查两项为正、积或和是定值",
          "calls": []
        },
        {
          "id": "bound",
          "title": "用基本不等式写出界",
          "calls": [
            "skill-apply-amgm"
          ]
        },
        {
          "id": "attain",
          "title": "解出取等的值，看它在不在范围里",
          "calls": [
            "skill-equality-transform"
          ]
        },
        {
          "id": "restore",
          "title": "把常数和系数加回去",
          "calls": [
            "skill-inequality-transform"
          ]
        }
      ]
    },
    {
      "id": "method-amgm-parameter",
      "kind": "method",
      "label": "基本不等式求参法",
      "summary": "含参数的不等式要恒成立或有解时，先弄清需要式子的最小值还是最大值，再用基本不等式求出这个最值，最后和参数比较定出范围。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "quantifier",
          "title": "判断要最小值还是最大值",
          "calls": [
            "skill-quantified-range"
          ]
        },
        {
          "id": "submethod",
          "title": "用基本不等式求这个最值",
          "calls": [
            "method-amgm-direct"
          ]
        },
        {
          "id": "parameter",
          "title": "拿最值和参数比较",
          "calls": [
            "skill-quantified-range",
            "skill-inequality-transform"
          ]
        },
        {
          "id": "verify",
          "title": "把边界值代回去检验",
          "calls": []
        }
      ]
    },
    {
      "id": "method-complete-square",
      "kind": "skill",
      "label": "配方",
      "summary": "把含 x² 和 x 的式子改写成「一个平方加一个常数」，从而看出最值、正负和顶点。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-difference-comparison",
      "kind": "method",
      "label": "作差比较法",
      "summary": "要比较两个式子谁大，就用一个减另一个，看差是正、是负还是 0。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "difference",
          "title": "前式减后式",
          "calls": []
        },
        {
          "id": "simplify",
          "title": "把差化简到能看出正负",
          "calls": [
            "skill-simplify",
            "method-complete-square",
            "skill-factor"
          ]
        },
        {
          "id": "sign",
          "title": "判断差的正负",
          "calls": [
            "skill-inequality-transform"
          ]
        },
        {
          "id": "conclude",
          "title": "写出谁大谁小",
          "calls": []
        }
      ]
    },
    {
      "id": "method-discriminant",
      "kind": "method",
      "label": "判别式法",
      "summary": "量词变量取全体实数时，用开口方向和判别式判断二次不等式恒成立还是至少有一个解；二次项系数可能为 0 时，先处理一次式或常数。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "degree",
          "title": "先看 x² 的系数能不能是 0",
          "calls": []
        },
        {
          "id": "normalize",
          "title": "移项整理成与 0 比较",
          "calls": [
            "skill-inequality-transform",
            "skill-simplify"
          ]
        },
        {
          "id": "conditions",
          "title": "写出开口和判别式的条件",
          "calls": [
            "skill-quadratic-sign",
            "skill-simplify",
            "skill-inequality-transform"
          ]
        },
        {
          "id": "solve",
          "title": "解出参数",
          "calls": [
            "skill-simplify",
            "skill-inequality-transform",
            "quadratic-inequality-solve"
          ]
        },
        {
          "id": "merge",
          "title": "把各种情况合起来，检查边界",
          "calls": []
        }
      ]
    },
    {
      "id": "method-elimination",
      "kind": "skill",
      "label": "消元",
      "summary": "用条件里的等式把一个字母写成另一个字母的式子，代进去，让题目只剩一个变量。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-fraction-split",
      "kind": "skill",
      "label": "分式分离",
      "summary": "把分子次数不低于分母的分式，拆成「整式 + 分子更简单的分式」，方便看范围或凑基本不等式。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-homogeneous",
      "kind": "skill",
      "label": "配齐次式",
      "summary": "借助像 x + y = 1 这样的条件，给某些项乘上「等于 1 的式子」，让各项次数一样，从而出现积为定值的比值项。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-interval-extremum",
      "kind": "method",
      "label": "区间最值法",
      "summary": "x 只在某个区间上取值时，把「恒成立」「有解」变成函数在这个区间上的最大值或最小值和参数比较，求出参数范围。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "quantifier",
          "title": "判断要区间上的最大值还是最小值",
          "calls": [
            "skill-quantified-range"
          ]
        },
        {
          "id": "select",
          "title": "按函数类型求区间上的取值范围",
          "calls": [],
          "rule": "rule-interval-skill"
        },
        {
          "id": "conditions",
          "title": "用最值写出参数条件",
          "calls": [
            "skill-inequality-transform"
          ]
        },
        {
          "id": "verify",
          "title": "检查边界带不带等号",
          "calls": []
        }
      ]
    },
    {
      "id": "method-matching",
      "kind": "skill",
      "label": "配凑定和或定积结构",
      "summary": "通过拆项、加一项再减掉、调整系数，把式子凑成「两项的积（或和）是定值」，好用基本不等式。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-parameter-quadratic-cases",
      "kind": "method",
      "label": "含参一元二次不等式分类讨论法",
      "summary": "解含参数的一元二次不等式时，只在 x² 的系数是否为 0、有没有根、两根谁大会发生变化的地方分情况，每种情况分别写出解集。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "normalize",
          "title": "找出要分情况的分界点",
          "calls": [
            "skill-simplify"
          ]
        },
        {
          "id": "degree",
          "title": "x² 的系数为 0 时按一次不等式解",
          "calls": [
            "skill-inequality-transform"
          ]
        },
        {
          "id": "quadratic",
          "title": "系数不为 0 时按开口和两根大小求解",
          "calls": [
            "quadratic-inequality-solve"
          ]
        },
        {
          "id": "merge",
          "title": "把各种情况的解集列齐",
          "calls": []
        }
      ]
    },
    {
      "id": "method-quadratic-extremum",
      "kind": "method",
      "label": "二次函数最值法",
      "summary": "把目标整理成一个变量的二次函数，确定变量范围，再根据顶点和区间的位置求最值，最后回代检查。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "prepare",
          "title": "按需整理、消元或换元",
          "calls": [
            "method-elimination",
            "method-substitution",
            "skill-simplify"
          ]
        },
        {
          "id": "domain",
          "title": "确定函数和变量范围",
          "calls": []
        },
        {
          "id": "extremum",
          "title": "比较顶点与区间求最值",
          "calls": [
            "quadratic-interval-extremum"
          ]
        },
        {
          "id": "verify",
          "title": "回代验证原条件",
          "calls": []
        }
      ]
    },
    {
      "id": "method-rational-inequality",
      "kind": "method",
      "label": "分式不等式转化法",
      "summary": "把分式不等式移项通分成「一个分式和 0 比」，再变成整式不等式来解，最后去掉让分母为 0 的 x。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "domain",
          "title": "先写下分母不为 0",
          "calls": []
        },
        {
          "id": "normalize",
          "title": "移项通分，让右边是 0",
          "calls": [
            "skill-simplify",
            "skill-inequality-transform"
          ]
        },
        {
          "id": "transform",
          "title": "两边乘分母的平方，变成整式",
          "calls": [
            "skill-rational-to-polynomial"
          ]
        },
        {
          "id": "solve",
          "title": "解这个整式不等式",
          "calls": [
            "quadratic-inequality-solve"
          ]
        },
        {
          "id": "intersect",
          "title": "去掉让分母为 0 的点",
          "calls": []
        }
      ]
    },
    {
      "id": "method-separation",
      "kind": "method",
      "label": "分离参数法",
      "summary": "把参数单独移到不等号一边，另一边是不含参数的函数，再用这个函数的最大值或最小值求出参数范围。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "separate",
          "title": "把参数单独移到一边",
          "calls": [
            "skill-inequality-transform",
            "skill-equality-transform"
          ]
        },
        {
          "id": "quantifier",
          "title": "看恒成立要用最大值还是最小值",
          "calls": [
            "skill-quantified-range"
          ]
        },
        {
          "id": "range",
          "title": "求另一边函数在区间上的最值",
          "calls": [
            "quadratic-interval-extremum",
            "skill-linear-range",
            "skill-reciprocal-range",
            "method-square-extremum",
            "skill-inequality-transform",
            "method-substitution"
          ]
        },
        {
          "id": "restore",
          "title": "写出参数范围，检查等号",
          "calls": [
            "skill-inequality-transform",
            "quadratic-inequality-solve"
          ]
        }
      ]
    },
    {
      "id": "method-solution-inverse",
      "kind": "method",
      "label": "解集反推法",
      "summary": "已知二次不等式的解集，倒过来求式子里的参数，最后代回去检查解集是否完全一样。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "read",
          "title": "从解集读出两个根和开口",
          "calls": [
            "skill-roots-from-solution"
          ]
        },
        {
          "id": "parameters",
          "title": "用两个根列方程求参数",
          "calls": [
            "skill-equality-transform"
          ]
        },
        {
          "id": "verify",
          "title": "代回去，重新解一遍",
          "calls": [
            "quadratic-inequality-solve"
          ]
        }
      ]
    },
    {
      "id": "method-square-extremum",
      "kind": "method",
      "label": "配方求最值法",
      "summary": "把要求最值的式子配方成「常数加减一个平方」，看平方在允许的范围里能不能等于 0，从而得到最大值或最小值。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "prepare",
          "title": "先变成只含一个字母",
          "calls": [
            "method-elimination",
            "method-substitution"
          ]
        },
        {
          "id": "square",
          "title": "配成「常数加减平方」",
          "calls": [
            "method-complete-square"
          ]
        },
        {
          "id": "range",
          "title": "看平方在范围里能不能等于 0",
          "calls": [
            "quadratic-interval-extremum"
          ]
        },
        {
          "id": "verify",
          "title": "定方向，写最值，回代检查",
          "calls": []
        }
      ]
    },
    {
      "id": "method-substitution",
      "kind": "skill",
      "label": "换元",
      "summary": "把一个碍事或反复出现的整体设成新字母，条件、要求的式子和取值范围都跟着换成新字母。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-sum-product-range",
      "kind": "method",
      "label": "和积换元法",
      "summary": "选取两个量，用它们的和与积改写条件和目标；根据所得关系，求界或解不等式，再检查能否还原为原变量。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "choose",
          "title": "确定对哪两个量设和与积",
          "calls": [
            "method-substitution"
          ]
        },
        {
          "id": "sum-product",
          "title": "用 s、p 改写条件",
          "calls": [
            "method-sum-product"
          ]
        },
        {
          "id": "reduce",
          "title": "联合条件与和积可行性关系",
          "calls": [
            "method-elimination",
            "skill-inequality-transform",
            "skill-apply-amgm"
          ]
        },
        {
          "id": "solve",
          "title": "求范围或最值",
          "calls": [
            "quadratic-inequality-solve",
            "method-amgm-direct"
          ]
        },
        {
          "id": "attain",
          "title": "检查范围里每个值都能取到",
          "calls": [
            "skill-solve-quadratic"
          ]
        }
      ]
    },
    {
      "id": "method-sum-product",
      "kind": "skill",
      "label": "用和与积表示对称式",
      "summary": "两个字母互换位置式子不变时，设 s = u + v、p = uv，改用和与积来写，再补上 s² ≥ 4p 保证 u、v 是实数。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "method-variable-swap",
      "kind": "method",
      "label": "更换主元法",
      "summary": "题目让哪个字母在范围里变化，就把它当主角，把式子整理成关于它的一次函数，看区间两端求出另一个字母的范围。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "reorder",
          "title": "更换主元",
          "calls": [
            "skill-simplify"
          ]
        },
        {
          "id": "quantifier",
          "title": "看恒成立要用最大值还是最小值",
          "calls": [
            "skill-quantified-range"
          ]
        },
        {
          "id": "range",
          "title": "由系数正负找最值在哪一端",
          "calls": [
            "skill-linear-range"
          ]
        },
        {
          "id": "solve",
          "title": "解出要求的字母",
          "calls": [
            "skill-inequality-transform",
            "quadratic-inequality-solve"
          ]
        },
        {
          "id": "merge",
          "title": "合并各情况的结果",
          "calls": []
        }
      ]
    },
    {
      "id": "quadratic-equation",
      "kind": "knowledge",
      "label": "一元二次方程",
      "summary": "用判别式判断实根情况，用求根公式或因式分解确定根，并通过根与系数关系连接表达式。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "quadratic-function-properties",
      "kind": "knowledge",
      "label": "二次函数",
      "summary": "二次函数的表达式、抛物线和零点共同描述函数在各处的取值。",
      "aliases": [
        "抛物线"
      ],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "quadratic-inequality-solve",
      "kind": "method",
      "label": "二次函数图像法",
      "summary": "先求出二次式的根，再根据开口方向看图像哪一段在 x 轴上方、哪一段在下方，写出不等式的解集。",
      "aliases": [],
      "home": "compulsory-1-ch2",
      "steps": [
        {
          "id": "normalize",
          "title": "移项，让一边是 0",
          "calls": [
            "skill-inequality-transform",
            "skill-simplify"
          ]
        },
        {
          "id": "roots",
          "title": "求出根，从小到大排好",
          "calls": [
            "skill-solve-quadratic"
          ]
        },
        {
          "id": "signs",
          "title": "画草图，看哪段在 x 轴上方",
          "calls": [
            "skill-quadratic-sign"
          ]
        },
        {
          "id": "solution",
          "title": "按不等号写出解集",
          "calls": []
        }
      ]
    },
    {
      "id": "quadratic-inequality",
      "kind": "knowledge",
      "label": "一元二次不等式",
      "summary": "二次不等式的解集由二次式的符号决定；图像在横轴上方或下方对应不同解集。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "quadratic-interval-extremum",
      "kind": "skill",
      "label": "求二次函数在区间上的最值与值域",
      "summary": "看开口方向和对称轴落在区间的哪一边，找出最大值、最小值在哪里取，再检查端点取不取得到。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "quantifiers",
      "kind": "knowledge",
      "label": "全称量词与存在量词",
      "summary": "先明确“对谁、在哪个范围内”，再区分全部满足与至少一次满足。",
      "aliases": [
        "恒成立",
        "存在成立",
        "任意",
        "有解"
      ],
      "home": "compulsory-1-ch1"
    },
    {
      "id": "real-order",
      "kind": "knowledge",
      "label": "不等式与实数大小关系",
      "summary": "用不等式表达大小关系，把两个实数的比较转化为它们的差与零的比较。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "reciprocal-sum-function",
      "kind": "knowledge",
      "label": "对勾函数",
      "summary": "k 取正数时，对勾函数在 y 轴两侧各有一个转折点；研究区间时先去掉 x=0。",
      "aliases": [
        "倒勾函数"
      ],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "rule-interval-skill",
      "kind": "judgment_rule",
      "subtype": "step_selection",
      "label": "区间求值技能选择",
      "summary": "要在一个区间上求函数的最值或值域时，先看它是二次函数、一次函数还是对勾函数，再选对应的求法。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "rule-quadratic-method",
      "kind": "judgment_rule",
      "subtype": "method_selection",
      "label": "含参一元二次不等式的选法判断",
      "summary": "遇到含参数的一元二次不等式，先看清「哪个字母在什么范围里变化」，再挑能用的方法，常常不止一种方法可用。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "section-1-5",
      "kind": "section",
      "label": "1.5 全称量词与存在量词",
      "summary": "区分“对所有”与“存在”两类命题，为恒成立与存在成立问题提供逻辑依据。",
      "aliases": [],
      "home": "compulsory-1-ch1"
    },
    {
      "id": "section-2-1",
      "kind": "section",
      "label": "2.1 等式性质与不等式性质",
      "summary": "从实数大小关系出发，学习等式与不等式的合法运算，并用作差比较代数式。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "section-2-2",
      "kind": "section",
      "label": "2.2 基本不等式",
      "summary": "以基本不等式的公式、定和定积应用为核心，通过专题拓展变形技能与和积换元法。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "section-2-3",
      "kind": "section",
      "label": "2.3 二次函数与一元二次方程、不等式",
      "summary": "把二次函数的图像、方程的实根与不等式解集联系起来，并拓展含参、量词与分式任务。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "section-3-2",
      "kind": "section",
      "label": "3.2 函数的基本性质",
      "summary": "用单调性描述函数的增减，用最大值与最小值描述函数的取值范围。",
      "aliases": [],
      "home": "compulsory-1-ch3"
    },
    {
      "id": "skill-apply-amgm",
      "kind": "skill",
      "label": "应用基本不等式",
      "summary": "两项都是正数时，写出 U + V ≥ 2√(UV)，并记下等号在 U = V 时成立。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-equality-transform",
      "kind": "skill",
      "label": "等式变形与推导",
      "summary": "用两边同加减、同乘除等办法整理等式，并分清每一步能不能倒推回去。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-factor",
      "kind": "skill",
      "label": "因式分解",
      "summary": "倒着用乘法公式、十字相乘，或者先求出二次式的根，把多项式写成几个因式相乘。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-inequality-transform",
      "kind": "skill",
      "label": "不等式变形与推导",
      "summary": "对不等式两边加减、乘除或取倒数时，先看乘除的数是正是负，再决定不等号要不要改方向。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-linear-range",
      "kind": "skill",
      "label": "求一次函数及常函数在区间上的最值与值域",
      "summary": "看 y = ax + b 的斜率 a 是正、负还是 0，把区间端点代进去，读出值域和最大、最小值。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-quadratic-sign",
      "kind": "skill",
      "label": "根据开口与零点判断二次式的正负",
      "summary": "由开口方向与零点判断二次式正、零、负的取值范围，再判断指定关系对所有实数成立，还是至少有一个实数解。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-quantified-range",
      "kind": "skill",
      "label": "将恒成立与存在成立转化为值域或最值条件",
      "summary": "把「对所有 x 都成立」「存在 x 使之成立」翻译成函数的值域或最大值、最小值要满足的条件。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-rational-to-polynomial",
      "kind": "skill",
      "label": "将分式不等式转化为整式不等式",
      "summary": "把「分式和 0 比大小」变成「分子乘分母和 0 比大小」，同时记住分母不能为 0。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-reciprocal-range",
      "kind": "skill",
      "label": "求对勾函数在区间上的最值与值域",
      "summary": "以 ±√k 为分界看对勾函数的增减，比较端点和转折点的函数值，得到它在区间上的值域和最值。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-roots-from-solution",
      "kind": "skill",
      "label": "由解集提取二次式的根与系数条件",
      "summary": "已知二次不等式的解集，从端点读出方程的两个根，从解集在两根之间还是之外读出开口方向，再列出系数要满足的式子。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-simplify",
      "kind": "skill",
      "label": "代数式化简",
      "summary": "把式子展开、合并同类项或约分，变成更简单、值不变的样子，方便下一步比较或求解。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "skill-solve-quadratic",
      "kind": "skill",
      "label": "求解一元二次方程",
      "summary": "把方程整理成 ax² + bx + c = 0，先用判别式看有几个实根，再用因式分解或求根公式求出它们。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "square-nonnegative",
      "kind": "knowledge",
      "label": "平方的非负性",
      "summary": "任何实数的平方非负，等于零恰好要求原数为零；由此可以比较二次表达式。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "textbook-pep-a-compulsory-1",
      "kind": "textbook",
      "label": "人教 A 版必修第一册",
      "summary": "本批公共图谱完整覆盖第二章，并纳入两个专题和相关补充练习；第一、三章目前只登记被第二章引用的知识点。同一数学对象跨节、跨章共享。",
      "aliases": []
    },
    {
      "id": "type-amgm-quantified",
      "kind": "problem_type",
      "label": "应用基本不等式的恒成立与存在成立问题",
      "summary": "不等式要对所有取值（或某个取值）成立，求参数范围、最小值或最大值；参数另一边式子的最值用基本不等式求，再看最值取不取得到。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-binary-quadratic-range",
      "kind": "problem_type",
      "label": "二元二次方程约束下的线性式取值范围",
      "summary": "已知 x、y 满足一个二次方程，求 x+y 这类一次式能取到的全部值。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-expression-comparison",
      "kind": "problem_type",
      "label": "代数式比较大小问题",
      "summary": "给两个代数式，判断哪个大，或者在什么条件下哪个大。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-parameter-quadratic-solve",
      "kind": "problem_type",
      "label": "含参数的一元二次不等式求解问题",
      "summary": "二次不等式的系数里有参数，按参数的不同情况分别写出 x 的解集。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-quadratic-solve",
      "kind": "problem_type",
      "label": "不含参数的一元二次不等式求解问题",
      "summary": "系数都是具体的数，解一元二次不等式，写出 x 的全部解。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-quantified-quadratic",
      "kind": "problem_type",
      "label": "含参一元二次不等式的恒成立与存在成立问题",
      "summary": "在给定范围内，二次不等式要对所有取值都成立（或至少一个取值成立），求参数的范围、最小值或最大值。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-rational-inequality",
      "kind": "problem_type",
      "label": "一元分式不等式求解问题",
      "summary": "解分母含 x 的不等式，写出全部解，别忘了分母不能为 0。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-solution-parameters",
      "kind": "problem_type",
      "label": "由一元二次不等式的解集求参数",
      "summary": "已知二次不等式的解集，反过来求式子里的系数或参数。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    },
    {
      "id": "type-sum-product-extremum",
      "kind": "problem_type",
      "label": "和积最值问题",
      "summary": "两个正数积是定值求和的最小值，或和是定值求积的最大值，以及能变形成这样的最值题。",
      "aliases": [],
      "home": "compulsory-1-ch2"
    }
  ],
  "edges": [
    {
      "id": "chapter-functions|contains|section-3-2",
      "from": "chapter-functions",
      "to": "section-3-2",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "chapter-quadratic-equations-inequalities|contains|section-2-1",
      "from": "chapter-quadratic-equations-inequalities",
      "to": "section-2-1",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "chapter-quadratic-equations-inequalities|contains|section-2-2",
      "from": "chapter-quadratic-equations-inequalities",
      "to": "section-2-2",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "chapter-quadratic-equations-inequalities|contains|section-2-3",
      "from": "chapter-quadratic-equations-inequalities",
      "to": "section-2-3",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "chapter-sets-logic|contains|section-1-5",
      "from": "chapter-sets-logic",
      "to": "section-1-5",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "method-amgm-direct|calls|method-elimination",
      "from": "method-amgm-direct",
      "to": "method-elimination",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "题目给了等式条件、能用它消掉一个变量时"
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|method-fraction-split",
      "from": "method-amgm-direct",
      "to": "method-fraction-split",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "式子是分子次数不低于分母的分式时"
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|method-homogeneous",
      "from": "method-amgm-direct",
      "to": "method-homogeneous",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "有 $x+y=1$ 这类条件、能用它乘「1」凑出定值时"
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|method-matching",
      "from": "method-amgm-direct",
      "to": "method-matching",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "需要拆项、加一项再减掉或配系数时"
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|method-substitution",
      "from": "method-amgm-direct",
      "to": "method-substitution",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "有一整块式子反复出现、可以设成新字母时"
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|skill-apply-amgm",
      "from": "method-amgm-direct",
      "to": "skill-apply-amgm",
      "type": "calls",
      "occurrences": [
        {
          "step": "bound",
          "when": ""
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|skill-equality-transform",
      "from": "method-amgm-direct",
      "to": "skill-equality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "attain",
          "when": ""
        }
      ]
    },
    {
      "id": "method-amgm-direct|calls|skill-inequality-transform",
      "from": "method-amgm-direct",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "restore",
          "when": "式子带负号或是倒数、要把最值方向反过来时"
        }
      ]
    },
    {
      "id": "method-amgm-parameter|calls|method-amgm-direct",
      "from": "method-amgm-parameter",
      "to": "method-amgm-direct",
      "type": "calls",
      "occurrences": [
        {
          "step": "submethod",
          "when": ""
        }
      ]
    },
    {
      "id": "method-amgm-parameter|calls|skill-inequality-transform",
      "from": "method-amgm-parameter",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "parameter",
          "when": ""
        }
      ]
    },
    {
      "id": "method-amgm-parameter|calls|skill-quantified-range",
      "from": "method-amgm-parameter",
      "to": "skill-quantified-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "quantifier",
          "when": ""
        },
        {
          "step": "parameter",
          "when": ""
        }
      ]
    },
    {
      "id": "method-complete-square|uses|equality-properties",
      "from": "method-complete-square",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "method-complete-square|uses|square-nonnegative",
      "from": "method-complete-square",
      "to": "square-nonnegative",
      "type": "uses",
      "occurrences": [
        {
          "entry": "nonnegative"
        }
      ]
    },
    {
      "id": "method-difference-comparison|calls|method-complete-square",
      "from": "method-difference-comparison",
      "to": "method-complete-square",
      "type": "calls",
      "occurrences": [
        {
          "step": "simplify",
          "when": "差里有 x² 和 x 项、能配成平方加常数时"
        }
      ]
    },
    {
      "id": "method-difference-comparison|calls|skill-factor",
      "from": "method-difference-comparison",
      "to": "skill-factor",
      "type": "calls",
      "occurrences": [
        {
          "step": "simplify",
          "when": "差能分解成几个因式相乘时"
        }
      ]
    },
    {
      "id": "method-difference-comparison|calls|skill-inequality-transform",
      "from": "method-difference-comparison",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "sign",
          "when": ""
        }
      ]
    },
    {
      "id": "method-difference-comparison|calls|skill-simplify",
      "from": "method-difference-comparison",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "simplify",
          "when": ""
        }
      ]
    },
    {
      "id": "method-discriminant|calls|quadratic-inequality-solve",
      "from": "method-discriminant",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": "参数满足的条件是一元二次不等式时"
        }
      ]
    },
    {
      "id": "method-discriminant|calls|skill-inequality-transform",
      "from": "method-discriminant",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        },
        {
          "step": "conditions",
          "when": "把判别式条件改写成参数的不等式时"
        },
        {
          "step": "solve",
          "when": ""
        }
      ]
    },
    {
      "id": "method-discriminant|calls|skill-quadratic-sign",
      "from": "method-discriminant",
      "to": "skill-quadratic-sign",
      "type": "calls",
      "occurrences": [
        {
          "step": "conditions",
          "when": "把全称或存在的正负要求翻译成开口方向与交点条件时"
        }
      ]
    },
    {
      "id": "method-discriminant|calls|skill-simplify",
      "from": "method-discriminant",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        },
        {
          "step": "conditions",
          "when": "代入系数计算并化简判别式时"
        },
        {
          "step": "solve",
          "when": ""
        }
      ]
    },
    {
      "id": "method-elimination|uses|equality-properties",
      "from": "method-elimination",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "addition"
        },
        {
          "entry": "multiplication"
        }
      ]
    },
    {
      "id": "method-fraction-split|uses|equality-properties",
      "from": "method-fraction-split",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "method-homogeneous|uses|equality-properties",
      "from": "method-homogeneous",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "method-interval-extremum|calls|skill-inequality-transform",
      "from": "method-interval-extremum",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "conditions",
          "when": ""
        }
      ]
    },
    {
      "id": "method-interval-extremum|calls|skill-quantified-range",
      "from": "method-interval-extremum",
      "to": "skill-quantified-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "quantifier",
          "when": ""
        }
      ]
    },
    {
      "id": "method-interval-extremum|step_rule|rule-interval-skill",
      "from": "method-interval-extremum",
      "to": "rule-interval-skill",
      "type": "step_rule",
      "occurrences": [
        {
          "step": "select"
        }
      ]
    },
    {
      "id": "method-matching|uses|amgm-formula",
      "from": "method-matching",
      "to": "amgm-formula",
      "type": "uses",
      "occurrences": [
        {
          "entry": "fixed-product"
        },
        {
          "entry": "fixed-sum"
        }
      ]
    },
    {
      "id": "method-matching|uses|equality-properties",
      "from": "method-matching",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "method-parameter-quadratic-cases|calls|quadratic-inequality-solve",
      "from": "method-parameter-quadratic-cases",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "quadratic",
          "when": "这种情况下 x² 的系数不为 0 时"
        }
      ]
    },
    {
      "id": "method-parameter-quadratic-cases|calls|skill-inequality-transform",
      "from": "method-parameter-quadratic-cases",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "degree",
          "when": ""
        }
      ]
    },
    {
      "id": "method-parameter-quadratic-cases|calls|skill-simplify",
      "from": "method-parameter-quadratic-cases",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        }
      ]
    },
    {
      "id": "method-quadratic-extremum|calls|method-elimination",
      "from": "method-quadratic-extremum",
      "to": "method-elimination",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "需要利用等式消去一个变量时"
        }
      ]
    },
    {
      "id": "method-quadratic-extremum|calls|method-substitution",
      "from": "method-quadratic-extremum",
      "to": "method-substitution",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "需要把反复出现的整体设为新变量时"
        }
      ]
    },
    {
      "id": "method-quadratic-extremum|calls|quadratic-interval-extremum",
      "from": "method-quadratic-extremum",
      "to": "quadratic-interval-extremum",
      "type": "calls",
      "occurrences": [
        {
          "step": "extremum",
          "when": ""
        }
      ]
    },
    {
      "id": "method-quadratic-extremum|calls|skill-simplify",
      "from": "method-quadratic-extremum",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "需要展开和合并同类项时"
        }
      ]
    },
    {
      "id": "method-rational-inequality|calls|quadratic-inequality-solve",
      "from": "method-rational-inequality",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": "乘出来是一元二次不等式时"
        }
      ]
    },
    {
      "id": "method-rational-inequality|calls|skill-inequality-transform",
      "from": "method-rational-inequality",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        }
      ]
    },
    {
      "id": "method-rational-inequality|calls|skill-rational-to-polynomial",
      "from": "method-rational-inequality",
      "to": "skill-rational-to-polynomial",
      "type": "calls",
      "occurrences": [
        {
          "step": "transform",
          "when": ""
        }
      ]
    },
    {
      "id": "method-rational-inequality|calls|skill-simplify",
      "from": "method-rational-inequality",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        }
      ]
    },
    {
      "id": "method-separation|calls|method-square-extremum",
      "from": "method-separation",
      "to": "method-square-extremum",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "另一边可配成常数加减平方，并能验证取等或区间边界时"
        }
      ]
    },
    {
      "id": "method-separation|calls|method-substitution",
      "from": "method-separation",
      "to": "method-substitution",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "另一边的线性分母可设为新变量，并能将函数化为已有的求值域形式时；同步转换区间并回代取等点"
        }
      ]
    },
    {
      "id": "method-separation|calls|quadratic-inequality-solve",
      "from": "method-separation",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "restore",
          "when": "还原后的参数条件是一元二次不等式时"
        }
      ]
    },
    {
      "id": "method-separation|calls|quadratic-interval-extremum",
      "from": "method-separation",
      "to": "quadratic-interval-extremum",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "另一边是二次函数时"
        }
      ]
    },
    {
      "id": "method-separation|calls|skill-equality-transform",
      "from": "method-separation",
      "to": "skill-equality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "separate",
          "when": ""
        }
      ]
    },
    {
      "id": "method-separation|calls|skill-inequality-transform",
      "from": "method-separation",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "separate",
          "when": ""
        },
        {
          "step": "range",
          "when": "另一边是符号确定函数的倒数，先求分母范围，再取倒数时"
        },
        {
          "step": "restore",
          "when": ""
        }
      ]
    },
    {
      "id": "method-separation|calls|skill-linear-range",
      "from": "method-separation",
      "to": "skill-linear-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "另一边是一次函数或常数时"
        }
      ]
    },
    {
      "id": "method-separation|calls|skill-quantified-range",
      "from": "method-separation",
      "to": "skill-quantified-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "quantifier",
          "when": ""
        }
      ]
    },
    {
      "id": "method-separation|calls|skill-reciprocal-range",
      "from": "method-separation",
      "to": "skill-reciprocal-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "另一边形如 $x+\\frac{k}{x}$（$k>0$）时"
        }
      ]
    },
    {
      "id": "method-solution-inverse|calls|quadratic-inequality-solve",
      "from": "method-solution-inverse",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "verify",
          "when": ""
        }
      ]
    },
    {
      "id": "method-solution-inverse|calls|skill-equality-transform",
      "from": "method-solution-inverse",
      "to": "skill-equality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "parameters",
          "when": ""
        }
      ]
    },
    {
      "id": "method-solution-inverse|calls|skill-roots-from-solution",
      "from": "method-solution-inverse",
      "to": "skill-roots-from-solution",
      "type": "calls",
      "occurrences": [
        {
          "step": "read",
          "when": ""
        }
      ]
    },
    {
      "id": "method-square-extremum|calls|method-complete-square",
      "from": "method-square-extremum",
      "to": "method-complete-square",
      "type": "calls",
      "occurrences": [
        {
          "step": "square",
          "when": ""
        }
      ]
    },
    {
      "id": "method-square-extremum|calls|method-elimination",
      "from": "method-square-extremum",
      "to": "method-elimination",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "有等式条件、需要减少字母时"
        }
      ]
    },
    {
      "id": "method-square-extremum|calls|method-substitution",
      "from": "method-square-extremum",
      "to": "method-substitution",
      "type": "calls",
      "occurrences": [
        {
          "step": "prepare",
          "when": "同一块反复出现、适合整体设新字母时"
        }
      ]
    },
    {
      "id": "method-square-extremum|calls|quadratic-interval-extremum",
      "from": "method-square-extremum",
      "to": "quadratic-interval-extremum",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": "化成一个字母的二次函数，且这个字母有范围限制时"
        }
      ]
    },
    {
      "id": "method-substitution|uses|equality-properties",
      "from": "method-substitution",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|method-amgm-direct",
      "from": "method-sum-product-range",
      "to": "method-amgm-direct",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": "转化后的目标满足基本不等式求最值条件时"
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|method-elimination",
      "from": "method-sum-product-range",
      "to": "method-elimination",
      "type": "calls",
      "occurrences": [
        {
          "step": "reduce",
          "when": ""
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|method-substitution",
      "from": "method-sum-product-range",
      "to": "method-substitution",
      "type": "calls",
      "occurrences": [
        {
          "step": "choose",
          "when": "要先把某个字母乘一个数或加一个数才对称时"
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|method-sum-product",
      "from": "method-sum-product-range",
      "to": "method-sum-product",
      "type": "calls",
      "occurrences": [
        {
          "step": "sum-product",
          "when": ""
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|quadratic-inequality-solve",
      "from": "method-sum-product-range",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": "得到一元二次不等式时"
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|skill-apply-amgm",
      "from": "method-sum-product-range",
      "to": "skill-apply-amgm",
      "type": "calls",
      "occurrences": [
        {
          "step": "reduce",
          "when": "选择正数和积不等关系建立可行性条件时，例如 Q30 的 s≥2√p 分支"
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|skill-inequality-transform",
      "from": "method-sum-product-range",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "reduce",
          "when": ""
        }
      ]
    },
    {
      "id": "method-sum-product-range|calls|skill-solve-quadratic",
      "from": "method-sum-product-range",
      "to": "skill-solve-quadratic",
      "type": "calls",
      "occurrences": [
        {
          "step": "attain",
          "when": ""
        }
      ]
    },
    {
      "id": "method-sum-product|uses|quadratic-equation",
      "from": "method-sum-product",
      "to": "quadratic-equation",
      "type": "uses",
      "occurrences": [
        {
          "entry": "reconstruction"
        }
      ]
    },
    {
      "id": "method-sum-product|uses|square-nonnegative",
      "from": "method-sum-product",
      "to": "square-nonnegative",
      "type": "uses",
      "occurrences": [
        {
          "entry": "sum-product"
        }
      ]
    },
    {
      "id": "method-variable-swap|calls|quadratic-inequality-solve",
      "from": "method-variable-swap",
      "to": "quadratic-inequality-solve",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": "得到关于要求字母的二次不等式时"
        }
      ]
    },
    {
      "id": "method-variable-swap|calls|skill-inequality-transform",
      "from": "method-variable-swap",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "solve",
          "when": ""
        }
      ]
    },
    {
      "id": "method-variable-swap|calls|skill-linear-range",
      "from": "method-variable-swap",
      "to": "skill-linear-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "range",
          "when": ""
        }
      ]
    },
    {
      "id": "method-variable-swap|calls|skill-quantified-range",
      "from": "method-variable-swap",
      "to": "skill-quantified-range",
      "type": "calls",
      "occurrences": [
        {
          "step": "quantifier",
          "when": ""
        }
      ]
    },
    {
      "id": "method-variable-swap|calls|skill-simplify",
      "from": "method-variable-swap",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "reorder",
          "when": ""
        }
      ]
    },
    {
      "id": "quadratic-equation|prerequisite|quadratic-inequality",
      "from": "quadratic-equation",
      "to": "quadratic-inequality",
      "type": "prerequisite",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "quadratic-function-properties|prerequisite|quadratic-inequality",
      "from": "quadratic-function-properties",
      "to": "quadratic-inequality",
      "type": "prerequisite",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "quadratic-inequality-solve|calls|skill-inequality-transform",
      "from": "quadratic-inequality-solve",
      "to": "skill-inequality-transform",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        }
      ]
    },
    {
      "id": "quadratic-inequality-solve|calls|skill-quadratic-sign",
      "from": "quadratic-inequality-solve",
      "to": "skill-quadratic-sign",
      "type": "calls",
      "occurrences": [
        {
          "step": "signs",
          "when": ""
        }
      ]
    },
    {
      "id": "quadratic-inequality-solve|calls|skill-simplify",
      "from": "quadratic-inequality-solve",
      "to": "skill-simplify",
      "type": "calls",
      "occurrences": [
        {
          "step": "normalize",
          "when": ""
        }
      ]
    },
    {
      "id": "quadratic-inequality-solve|calls|skill-solve-quadratic",
      "from": "quadratic-inequality-solve",
      "to": "skill-solve-quadratic",
      "type": "calls",
      "occurrences": [
        {
          "step": "roots",
          "when": ""
        }
      ]
    },
    {
      "id": "quadratic-interval-extremum|uses|function-range-extrema",
      "from": "quadratic-interval-extremum",
      "to": "function-range-extrema",
      "type": "uses",
      "occurrences": [
        {
          "entry": "attainability"
        }
      ]
    },
    {
      "id": "quadratic-interval-extremum|uses|quadratic-function-properties",
      "from": "quadratic-interval-extremum",
      "to": "quadratic-function-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "vertex"
        },
        {
          "entry": "interval"
        }
      ]
    },
    {
      "id": "real-order|prerequisite|inequality-properties",
      "from": "real-order",
      "to": "inequality-properties",
      "type": "prerequisite",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "rule-interval-skill|selects|quadratic-interval-extremum",
      "from": "rule-interval-skill",
      "to": "quadratic-interval-extremum",
      "type": "selects",
      "occurrences": [
        {
          "branch": "quadratic",
          "condition": "式子关于正在研究的字母是二次的，并且二次项系数不为 $0$，例如 $m\\ne0$ 时的 $mx^2+2$。"
        }
      ]
    },
    {
      "id": "rule-interval-skill|selects|skill-linear-range",
      "from": "rule-interval-skill",
      "to": "skill-linear-range",
      "type": "selects",
      "occurrences": [
        {
          "branch": "linear",
          "condition": "式子关于正在研究的字母是 $ax+b$ 的样子，$a$ 可正可负，也可以是 $0$（这时是常数）。"
        }
      ]
    },
    {
      "id": "rule-interval-skill|selects|skill-reciprocal-range",
      "from": "rule-interval-skill",
      "to": "skill-reciprocal-range",
      "type": "selects",
      "occurrences": [
        {
          "branch": "reciprocal",
          "condition": "式子是 $x+\\frac{k}{x}$ 的样子且 $k>0$；$x$ 不能取 $0$，区间同时含正数和负数时，要拆成正、负两段分别求。"
        }
      ]
    },
    {
      "id": "rule-quadratic-method|selects|method-discriminant",
      "from": "rule-quadratic-method",
      "to": "method-discriminant",
      "type": "selects",
      "occurrences": [
        {
          "branch": "discriminant",
          "condition": "量词变量取全体实数，式子关于它是二次的，要求恒成立或存在实数使其成立；四种关系 $>$、$\\ge$、$<$、$\\le$ 都要结合量词和开口判断。二次项系数含参数时，先单独处理系数为 $0$ 的情况。"
        }
      ]
    },
    {
      "id": "rule-quadratic-method|selects|method-interval-extremum",
      "from": "rule-quadratic-method",
      "to": "method-interval-extremum",
      "type": "selects",
      "occurrences": [
        {
          "branch": "interval",
          "condition": "$x$ 在给定区间内取值，区间可以是有限区间、半无限区间或全体实数 $\\mathbb R$；能求出相关函数在该范围上的最大值、最小值（二次函数、一次函数或对勾函数），最值取不到时要单独看等号。$x$ 取全体实数时，判别式法通常更直接，优先用判别式法。"
        }
      ]
    },
    {
      "id": "rule-quadratic-method|selects|method-separation",
      "from": "rule-quadratic-method",
      "to": "method-separation",
      "type": "selects",
      "occurrences": [
        {
          "branch": "separation",
          "condition": "$x$ 在题目给定的范围里取值（常见是某个区间，全体实数也可以）；能把参数（或含参数的式子）移到不等号一边，另一边只含 $x$，并且能求出这一边在该范围上的最大值或最小值。除以含 $x$ 的式子之前，要能确定它在这个范围上的正负。"
        }
      ]
    },
    {
      "id": "rule-quadratic-method|selects|method-variable-swap",
      "from": "rule-quadratic-method",
      "to": "method-variable-swap",
      "type": "selects",
      "occurrences": [
        {
          "branch": "swap",
          "condition": "给出范围的是参数（如 $m\\in[1,3]$），要求的却是 $x$；把式子按这个参数整理后是一次式或常数，就看区间两端。"
        }
      ]
    },
    {
      "id": "section-1-5|contains|quantifiers",
      "from": "section-1-5",
      "to": "quantifiers",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|equality-properties",
      "from": "section-2-1",
      "to": "equality-properties",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|inequality-properties",
      "from": "section-2-1",
      "to": "inequality-properties",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|method-difference-comparison",
      "from": "section-2-1",
      "to": "method-difference-comparison",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|real-order",
      "from": "section-2-1",
      "to": "real-order",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|skill-equality-transform",
      "from": "section-2-1",
      "to": "skill-equality-transform",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|skill-inequality-transform",
      "from": "section-2-1",
      "to": "skill-inequality-transform",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|skill-simplify",
      "from": "section-2-1",
      "to": "skill-simplify",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|square-nonnegative",
      "from": "section-2-1",
      "to": "square-nonnegative",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-1|contains|type-expression-comparison",
      "from": "section-2-1",
      "to": "type-expression-comparison",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|contains|amgm-formula",
      "from": "section-2-2",
      "to": "amgm-formula",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|contains|method-amgm-direct",
      "from": "section-2-2",
      "to": "method-amgm-direct",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|contains|skill-apply-amgm",
      "from": "section-2-2",
      "to": "skill-apply-amgm",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|contains|square-nonnegative",
      "from": "section-2-2",
      "to": "square-nonnegative",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|contains|type-sum-product-extremum",
      "from": "section-2-2",
      "to": "type-sum-product-extremum",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-amgm-parameter",
      "from": "section-2-2",
      "to": "method-amgm-parameter",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-complete-square",
      "from": "section-2-2",
      "to": "method-complete-square",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-elimination",
      "from": "section-2-2",
      "to": "method-elimination",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-fraction-split",
      "from": "section-2-2",
      "to": "method-fraction-split",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-homogeneous",
      "from": "section-2-2",
      "to": "method-homogeneous",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-matching",
      "from": "section-2-2",
      "to": "method-matching",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-quadratic-extremum",
      "from": "section-2-2",
      "to": "method-quadratic-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-square-extremum",
      "from": "section-2-2",
      "to": "method-square-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-substitution",
      "from": "section-2-2",
      "to": "method-substitution",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-sum-product",
      "from": "section-2-2",
      "to": "method-sum-product",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|method-sum-product-range",
      "from": "section-2-2",
      "to": "method-sum-product-range",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|type-amgm-quantified",
      "from": "section-2-2",
      "to": "type-amgm-quantified",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-2|extends|type-binary-quadratic-range",
      "from": "section-2-2",
      "to": "type-binary-quadratic-range",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|quadratic-equation",
      "from": "section-2-3",
      "to": "quadratic-equation",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|quadratic-function-properties",
      "from": "section-2-3",
      "to": "quadratic-function-properties",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|quadratic-inequality",
      "from": "section-2-3",
      "to": "quadratic-inequality",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|quadratic-inequality-solve",
      "from": "section-2-3",
      "to": "quadratic-inequality-solve",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-equality-transform",
      "from": "section-2-3",
      "to": "skill-equality-transform",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-factor",
      "from": "section-2-3",
      "to": "skill-factor",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-inequality-transform",
      "from": "section-2-3",
      "to": "skill-inequality-transform",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-quadratic-sign",
      "from": "section-2-3",
      "to": "skill-quadratic-sign",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-simplify",
      "from": "section-2-3",
      "to": "skill-simplify",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|skill-solve-quadratic",
      "from": "section-2-3",
      "to": "skill-solve-quadratic",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|contains|type-quadratic-solve",
      "from": "section-2-3",
      "to": "type-quadratic-solve",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|function-monotonicity",
      "from": "section-2-3",
      "to": "function-monotonicity",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|function-range-extrema",
      "from": "section-2-3",
      "to": "function-range-extrema",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|linear-interval-extremum",
      "from": "section-2-3",
      "to": "linear-interval-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-amgm-parameter",
      "from": "section-2-3",
      "to": "method-amgm-parameter",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-complete-square",
      "from": "section-2-3",
      "to": "method-complete-square",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-discriminant",
      "from": "section-2-3",
      "to": "method-discriminant",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-interval-extremum",
      "from": "section-2-3",
      "to": "method-interval-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-parameter-quadratic-cases",
      "from": "section-2-3",
      "to": "method-parameter-quadratic-cases",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-quadratic-extremum",
      "from": "section-2-3",
      "to": "method-quadratic-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-rational-inequality",
      "from": "section-2-3",
      "to": "method-rational-inequality",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-separation",
      "from": "section-2-3",
      "to": "method-separation",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-solution-inverse",
      "from": "section-2-3",
      "to": "method-solution-inverse",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|method-variable-swap",
      "from": "section-2-3",
      "to": "method-variable-swap",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|quadratic-interval-extremum",
      "from": "section-2-3",
      "to": "quadratic-interval-extremum",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|quantifiers",
      "from": "section-2-3",
      "to": "quantifiers",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|reciprocal-sum-function",
      "from": "section-2-3",
      "to": "reciprocal-sum-function",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|skill-linear-range",
      "from": "section-2-3",
      "to": "skill-linear-range",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|skill-quantified-range",
      "from": "section-2-3",
      "to": "skill-quantified-range",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|skill-rational-to-polynomial",
      "from": "section-2-3",
      "to": "skill-rational-to-polynomial",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|skill-reciprocal-range",
      "from": "section-2-3",
      "to": "skill-reciprocal-range",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|skill-roots-from-solution",
      "from": "section-2-3",
      "to": "skill-roots-from-solution",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|type-amgm-quantified",
      "from": "section-2-3",
      "to": "type-amgm-quantified",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|type-parameter-quadratic-solve",
      "from": "section-2-3",
      "to": "type-parameter-quadratic-solve",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|type-quantified-quadratic",
      "from": "section-2-3",
      "to": "type-quantified-quadratic",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|type-rational-inequality",
      "from": "section-2-3",
      "to": "type-rational-inequality",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-2-3|extends|type-solution-parameters",
      "from": "section-2-3",
      "to": "type-solution-parameters",
      "type": "extends",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-3-2|contains|function-monotonicity",
      "from": "section-3-2",
      "to": "function-monotonicity",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "section-3-2|contains|function-range-extrema",
      "from": "section-3-2",
      "to": "function-range-extrema",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "skill-apply-amgm|uses|amgm-formula",
      "from": "skill-apply-amgm",
      "to": "amgm-formula",
      "type": "uses",
      "occurrences": [
        {
          "entry": "formula"
        }
      ]
    },
    {
      "id": "skill-equality-transform|uses|equality-properties",
      "from": "skill-equality-transform",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "addition"
        },
        {
          "entry": "multiplication"
        },
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "skill-factor|uses|equality-properties",
      "from": "skill-factor",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "skill-factor|uses|quadratic-equation",
      "from": "skill-factor",
      "to": "quadratic-equation",
      "type": "uses",
      "occurrences": [
        {
          "entry": "vieta"
        }
      ]
    },
    {
      "id": "skill-inequality-transform|uses|inequality-properties",
      "from": "skill-inequality-transform",
      "to": "inequality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "addition"
        },
        {
          "entry": "multiplication"
        },
        {
          "entry": "reciprocal"
        }
      ]
    },
    {
      "id": "skill-inequality-transform|uses|real-order",
      "from": "skill-inequality-transform",
      "to": "real-order",
      "type": "uses",
      "occurrences": [
        {
          "entry": "difference"
        }
      ]
    },
    {
      "id": "skill-linear-range|uses|function-range-extrema",
      "from": "skill-linear-range",
      "to": "function-range-extrema",
      "type": "uses",
      "occurrences": [
        {
          "entry": "attainability"
        }
      ]
    },
    {
      "id": "skill-linear-range|uses|linear-interval-extremum",
      "from": "skill-linear-range",
      "to": "linear-interval-extremum",
      "type": "uses",
      "occurrences": [
        {
          "entry": "monotonicity"
        },
        {
          "entry": "interval"
        }
      ]
    },
    {
      "id": "skill-quadratic-sign|uses|quadratic-equation",
      "from": "skill-quadratic-sign",
      "to": "quadratic-equation",
      "type": "uses",
      "occurrences": [
        {
          "entry": "discriminant"
        }
      ]
    },
    {
      "id": "skill-quadratic-sign|uses|quadratic-function-properties",
      "from": "skill-quadratic-sign",
      "to": "quadratic-function-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "zeros"
        }
      ]
    },
    {
      "id": "skill-quadratic-sign|uses|quadratic-inequality",
      "from": "skill-quadratic-sign",
      "to": "quadratic-inequality",
      "type": "uses",
      "occurrences": [
        {
          "entry": "signs"
        },
        {
          "entry": "all-real"
        }
      ]
    },
    {
      "id": "skill-quantified-range|uses|function-range-extrema",
      "from": "skill-quantified-range",
      "to": "function-range-extrema",
      "type": "uses",
      "occurrences": [
        {
          "entry": "quantified"
        },
        {
          "entry": "extremum-conditions"
        }
      ]
    },
    {
      "id": "skill-quantified-range|uses|quantifiers",
      "from": "skill-quantified-range",
      "to": "quantifiers",
      "type": "uses",
      "occurrences": [
        {
          "entry": "universal"
        },
        {
          "entry": "existential"
        }
      ]
    },
    {
      "id": "skill-rational-to-polynomial|uses|inequality-properties",
      "from": "skill-rational-to-polynomial",
      "to": "inequality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "multiplication"
        }
      ]
    },
    {
      "id": "skill-rational-to-polynomial|uses|square-nonnegative",
      "from": "skill-rational-to-polynomial",
      "to": "square-nonnegative",
      "type": "uses",
      "occurrences": [
        {
          "entry": "nonnegative"
        }
      ]
    },
    {
      "id": "skill-reciprocal-range|uses|function-range-extrema",
      "from": "skill-reciprocal-range",
      "to": "function-range-extrema",
      "type": "uses",
      "occurrences": [
        {
          "entry": "attainability"
        }
      ]
    },
    {
      "id": "skill-reciprocal-range|uses|reciprocal-sum-function",
      "from": "skill-reciprocal-range",
      "to": "reciprocal-sum-function",
      "type": "uses",
      "occurrences": [
        {
          "entry": "monotonicity"
        },
        {
          "entry": "range"
        }
      ]
    },
    {
      "id": "skill-roots-from-solution|uses|quadratic-equation",
      "from": "skill-roots-from-solution",
      "to": "quadratic-equation",
      "type": "uses",
      "occurrences": [
        {
          "entry": "vieta"
        }
      ]
    },
    {
      "id": "skill-roots-from-solution|uses|quadratic-inequality",
      "from": "skill-roots-from-solution",
      "to": "quadratic-inequality",
      "type": "uses",
      "occurrences": [
        {
          "entry": "signs"
        },
        {
          "entry": "endpoints"
        }
      ]
    },
    {
      "id": "skill-simplify|uses|equality-properties",
      "from": "skill-simplify",
      "to": "equality-properties",
      "type": "uses",
      "occurrences": [
        {
          "entry": "identity"
        }
      ]
    },
    {
      "id": "skill-solve-quadratic|uses|quadratic-equation",
      "from": "skill-solve-quadratic",
      "to": "quadratic-equation",
      "type": "uses",
      "occurrences": [
        {
          "entry": "discriminant"
        },
        {
          "entry": "roots"
        },
        {
          "entry": "vieta"
        }
      ]
    },
    {
      "id": "square-nonnegative|prerequisite|amgm-formula",
      "from": "square-nonnegative",
      "to": "amgm-formula",
      "type": "prerequisite",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "textbook-pep-a-compulsory-1|contains|chapter-functions",
      "from": "textbook-pep-a-compulsory-1",
      "to": "chapter-functions",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "textbook-pep-a-compulsory-1|contains|chapter-quadratic-equations-inequalities",
      "from": "textbook-pep-a-compulsory-1",
      "to": "chapter-quadratic-equations-inequalities",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "textbook-pep-a-compulsory-1|contains|chapter-sets-logic",
      "from": "textbook-pep-a-compulsory-1",
      "to": "chapter-sets-logic",
      "type": "contains",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-amgm-quantified|candidate|method-amgm-parameter",
      "from": "type-amgm-quantified",
      "to": "method-amgm-parameter",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-amgm-quantified|involves|amgm-formula",
      "from": "type-amgm-quantified",
      "to": "amgm-formula",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-amgm-quantified|involves|function-range-extrema",
      "from": "type-amgm-quantified",
      "to": "function-range-extrema",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-amgm-quantified|involves|quantifiers",
      "from": "type-amgm-quantified",
      "to": "quantifiers",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-binary-quadratic-range|candidate|method-sum-product-range",
      "from": "type-binary-quadratic-range",
      "to": "method-sum-product-range",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-binary-quadratic-range|involves|quadratic-equation",
      "from": "type-binary-quadratic-range",
      "to": "quadratic-equation",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-binary-quadratic-range|involves|square-nonnegative",
      "from": "type-binary-quadratic-range",
      "to": "square-nonnegative",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-expression-comparison|candidate|method-difference-comparison",
      "from": "type-expression-comparison",
      "to": "method-difference-comparison",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-expression-comparison|involves|inequality-properties",
      "from": "type-expression-comparison",
      "to": "inequality-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-expression-comparison|involves|real-order",
      "from": "type-expression-comparison",
      "to": "real-order",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-expression-comparison|involves|square-nonnegative",
      "from": "type-expression-comparison",
      "to": "square-nonnegative",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-parameter-quadratic-solve|candidate|method-parameter-quadratic-cases",
      "from": "type-parameter-quadratic-solve",
      "to": "method-parameter-quadratic-cases",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-parameter-quadratic-solve|involves|quadratic-equation",
      "from": "type-parameter-quadratic-solve",
      "to": "quadratic-equation",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-parameter-quadratic-solve|involves|quadratic-function-properties",
      "from": "type-parameter-quadratic-solve",
      "to": "quadratic-function-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-parameter-quadratic-solve|involves|quadratic-inequality",
      "from": "type-parameter-quadratic-solve",
      "to": "quadratic-inequality",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quadratic-solve|candidate|quadratic-inequality-solve",
      "from": "type-quadratic-solve",
      "to": "quadratic-inequality-solve",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quadratic-solve|involves|quadratic-equation",
      "from": "type-quadratic-solve",
      "to": "quadratic-equation",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quadratic-solve|involves|quadratic-function-properties",
      "from": "type-quadratic-solve",
      "to": "quadratic-function-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quadratic-solve|involves|quadratic-inequality",
      "from": "type-quadratic-solve",
      "to": "quadratic-inequality",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quantified-quadratic|involves|function-range-extrema",
      "from": "type-quantified-quadratic",
      "to": "function-range-extrema",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quantified-quadratic|involves|quadratic-function-properties",
      "from": "type-quantified-quadratic",
      "to": "quadratic-function-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quantified-quadratic|involves|quadratic-inequality",
      "from": "type-quantified-quadratic",
      "to": "quadratic-inequality",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quantified-quadratic|involves|quantifiers",
      "from": "type-quantified-quadratic",
      "to": "quantifiers",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-quantified-quadratic|method_rule|rule-quadratic-method",
      "from": "type-quantified-quadratic",
      "to": "rule-quadratic-method",
      "type": "method_rule",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-rational-inequality|candidate|method-rational-inequality",
      "from": "type-rational-inequality",
      "to": "method-rational-inequality",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-rational-inequality|involves|inequality-properties",
      "from": "type-rational-inequality",
      "to": "inequality-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-rational-inequality|involves|quadratic-inequality",
      "from": "type-rational-inequality",
      "to": "quadratic-inequality",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-solution-parameters|candidate|method-solution-inverse",
      "from": "type-solution-parameters",
      "to": "method-solution-inverse",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-solution-parameters|involves|quadratic-equation",
      "from": "type-solution-parameters",
      "to": "quadratic-equation",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-solution-parameters|involves|quadratic-function-properties",
      "from": "type-solution-parameters",
      "to": "quadratic-function-properties",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-solution-parameters|involves|quadratic-inequality",
      "from": "type-solution-parameters",
      "to": "quadratic-inequality",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|candidate|method-amgm-direct",
      "from": "type-sum-product-extremum",
      "to": "method-amgm-direct",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|candidate|method-quadratic-extremum",
      "from": "type-sum-product-extremum",
      "to": "method-quadratic-extremum",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|candidate|method-square-extremum",
      "from": "type-sum-product-extremum",
      "to": "method-square-extremum",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|candidate|method-sum-product-range",
      "from": "type-sum-product-extremum",
      "to": "method-sum-product-range",
      "type": "candidate",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|involves|amgm-formula",
      "from": "type-sum-product-extremum",
      "to": "amgm-formula",
      "type": "involves",
      "occurrences": [
        {}
      ]
    },
    {
      "id": "type-sum-product-extremum|involves|square-nonnegative",
      "from": "type-sum-product-extremum",
      "to": "square-nonnegative",
      "type": "involves",
      "occurrences": [
        {}
      ]
    }
  ]
}
