{
  "exc": {
    "scope": "latex",
    "prefix": ["\\exc"],
    "body":
      [
        "\\exc{}",
        "\\begin{subexcs}",
        "  \\subexc{}",
        "  $0",
        "\\end{subexcs}"
      ],
    "description": "Adds new exc with subexcs",
  },

  "subexc": {
    "scope": "latex",
    "prefix": ["\\subexc"],
    "body":
      [
        "\\subexc{}",
        "\\begin{ssubexcs}",
        "  \\ssubexc{}",
        "  $0",
        "\\end{ssubexcs}"
      ],
    "description": "Adds new subexc with ssubexcs",
  },

  "graph-table": {
    "scope": "latex",
    "prefix": ["graph-table"],
    "body":
      [
      "\\begin{figure}[H]",
      "  \\center",
      "  \\begin{tabular}{c|cc}",
      "    $A$ & \\multicolumn{2}{c}{$v$} \\\\",
      "    \\hline",
      "      & $a$ & $b$ \\\\",
      "    \\hline",
      "    $s_0$ & $s_$ & $s_$ \\\\",
      "    $s_1$ & $s_$ & $s_$ \\\\",
      "    $s_2$ & $s_$ & $s_$ \\\\",
      "  \\end{tabular}",
      "\\end{figure}"
      ],
    "description": "Adds graph-table",
  },

  "graph-table-double": {
    "scope": "latex",
    "prefix": ["graph-dtable"],
    "body":
      [
      "\\begin{figure}[H]",
      "  \\center",
      "  \\begin{tabular}{c|cc}",
      "    $A$ & \\multicolumn{2}{c}{$v$} \\\\",
      "    \\hline",
      "      & $a$ & $b$ \\\\",
      "    \\hline",
      "    $s_0$ & $s_$ & $s_$ \\\\",
      "    $s_1$ & $s_$ & $s_$ \\\\",
      "    $s_2$ & $s_$ & $s_$ \\\\",
      "  \\end{tabular}",
      "\\end{figure}"
      ],
    "description": "Adds graph-table",
  },
  
  "graph-table-line": {
    "scope": "latex",
    "prefix": ["gtl"],
    "body": "    $s_$ & $s_$ & $s_$ \\\\",
    "description": "Adds line inside graph-table",
  },

  "graph-table-double-line": {
    "scope": "latex",
    "prefix": ["gtdl"],
    "body": "    $s_$ & $s_$ & $s_$ & $s_$ & $s_$ \\\\",
    "description": "Adds line inside a double graph-table",
  },

  "induction-proof": {
    "scope": "latex",
    "prefix": ["prove-induction"],
    "body": [
      "Base case:",
      "",
      "\\begin{align*}",
      "",
      "\\end{align*}",
      "",
      "Assume that",
      "",
      "\\[ $1 \\]",
      "",
      "Then",
      "",
      "\begin{align*}",
      "    &= $1 + \\\\",
      "    &=",
      "\\end{align*}",
      "",
      "\\qed"
    ],
    "description": "Template for induction proof",
  },

  "injective-proof": {
    "scope": "latex",
    "prefix": ["prove-injective"],
    "body": [
      "In order for $f(x)$ to be injective, it has to hold that",
      "",
      "\\[ f(a) = f(b) \\Rightarrow a = b \\]",
      "",
      "\\begin{align*}",
      "  f(a) &= f(b) \\\\",
      "  $0",
      "\\end{align*}",
      "",
      "Hence $f(x)$ is injective."
    ],
    "description": "Template for injective proof",
  },

  "surjective-proof": {
    "scope": "latex",
    "prefix": ["prove-surjective"],
    "body": [
      "In order for $f(x)$ to be surjective, it has to hold that",
      "",
      "\\[ \\forall x \\in SET \\exists y \\in SET [f(x) = y] \\]",
      "",
      "\\begin{align*}",
      "  y &= $1 \\\\",
      "",
      "  x &=  \\\\" ,
      "\\end{align*}",
      "",
      "$ $ makes up all the elements in SET",
      "",
      "\\begin{align*}",
      "  f(y) &=  \\\\",
      "",
      "\\end{align*}",
      "",
      "Hence $f(x)$ is surjective"
    ],
    "description": "Template for surjective proof",
  },

  "bijective-proof": {
    "scope": "latex",
    "prefix": ["prove-bijective"],
    "body": [
      "\\textbf{Injective:}",
      "",
      "In order for $f(x)$ to be injective, it has to hold that",
      "",
      "\\[ f(a) = f(b) \\Rightarrow a = b \\]",
      "",
      "\\begin{align*}",
      "  f(a) &= f(b) \\\\",
      "  $0",
      "\\end{align*}",
      "",
      "Hence $f(x)$ is injective.",
      "",
      "",
      "\\textbf{Surjective:}",
      "",
      "In order for $f(x)$ to be surjective, it has to hold that",
      "",
      "\\[ \\forall x \\in SET \\exists y \\in SET [f(x) = y] \\]",
      "",
      "\\begin{align*}",
      "  y &= $1 \\\\",
      "",
      "  x &=  \\\\" ,
      "\\end{align*}",
      "",
      "$ $ makes up all the elements in SET",
      "",
      "\\begin{align*}",
      "  f(y) &=  \\\\",
      "",
      "\\end{align*}",
      "",
      "Hence $f(x)$ is surjective",
      "",
      "",
      "\\textbf{Inverse:}",
      "",
      "The inverse is the same as the expression which makes up $x$ which we used to prove that $f(x)$ is surjective. Hence",
      "",
      "\\[ f^{-1}(x) =  \\]",
    ],
    "description": "Template for bijective proof",
  },

  "equivalence-relation-proof": {
    "scope": "latex",
    "prefix": ["prove-eq-rel"],
    "body": [
      "In order for this relation to be an equivalence equation, it has to be reflexive, symmetric and transitive.",
      "",
      "\\textbf{Reflexive:}",
      "",
      "\\[  \\]",
      "",
      "\\textbf{Symmetric:}",
      "",
      "\\[  \\]",
      "",
      "\\textbf{Transitive:}",
      "",
      "\\[  \\]",
      "",
      "Hence the relation is an equivalence relation",
    ],
    "description": "Template for equivalence relation proof",
  },

  "partial order-proof": {
    "scope": "latex",
    "prefix": ["prove-poset"],
    "body": [
      "In order for this relation to be a partial order, it has to be reflexive, antisymmetric and transitive.",
      "",
      "\\textbf{Reflexive:}",
      "",
      "\\[  \\]",
      "",
      "\\textbf{Antisymmetric:}",
      "",
      "\\[  \\]",
      "",
      "\\textbf{Transitive:}",
      "",
      "\\[  \\]",
      "",
      "Hence the relation is a partial order",
    ],
    "description": "Template for poset proof",
  },

  "poset minmax": {
    "scope": "latex",
    "prefix": ["minmax-poset"],
    "body": [
      "Minimal elements:",
      "  \\[ \\{ $0 \\} \\]",
      "Maximal elements:",
      "  \\[ \\{  \\} \\]"
    ],
    "description": "Minimal maximal elements for poset",
  },

  "Diagram": {
    "scope": "latex",
    "prefix": ["dia"],
    "body": "\\includeDiagram[caption={}, width=1\\linewidth]{graphics/$0.tex}",
    "description": "Include a diagram",
  },

}