Browse Source

Reinit

main
Amélia Liao 1 year ago
commit
21bc57abd4
212 changed files with 19189 additions and 0 deletions
  1. +15
    -0
      .gitignore
  2. +27
    -0
      blag.cabal
  3. +98
    -0
      css/agda.scss
  4. +528
    -0
      css/default.scss
  5. +419
    -0
      css/fonts.scss
  6. +1
    -0
      css/katex.min.css
  7. +62
    -0
      css/vars.scss
  8. +27
    -0
      default.nix
  9. +15
    -0
      diagrams/cc/delimcc.tex
  10. +2
    -0
      diagrams/ctt/axes.tex
  11. +3
    -0
      diagrams/ctt/circle.tex
  12. +11
    -0
      diagrams/ctt/comp_path.tex
  13. +4
    -0
      diagrams/ctt/eq_i0_i1.tex
  14. +11
    -0
      diagrams/ctt/land_connection.tex
  15. +11
    -0
      diagrams/ctt/lor_connection.tex
  16. +4
    -0
      diagrams/ctt/pi_vs_pnoti_1.tex
  17. +4
    -0
      diagrams/ctt/pi_vs_pnoti_2.tex
  18. +4
    -0
      diagrams/ctt/refl_tt.tex
  19. +6
    -0
      diagrams/ctt/span.tex
  20. +9
    -0
      diagrams/ctt/span_colimit.tex
  21. +1
    -0
      diagrams/ctt/transp.tex
  22. +9
    -0
      diagrams/ctt/univalence.tex
  23. +30
    -0
      diagrams/cubicalsets/acube.tex
  24. +6
    -0
      diagrams/cubicalsets/aglobe.tex
  25. +10
    -0
      diagrams/cubicalsets/asquare.tex
  26. +11
    -0
      diagrams/cubicalsets/cubical_2cell.tex
  27. +24
    -0
      diagrams/cubicalsets/degeneracies.tex
  28. +9
    -0
      diagrams/cubicalsets/del_asquare.tex
  29. +17
    -0
      diagrams/cubicalsets/delta10_delta0.tex
  30. +43
    -0
      diagrams/cubicalsets/facemap.tex
  31. +38
    -0
      diagrams/cubicalsets/first_ncubes.tex
  32. +6
    -0
      diagrams/cubicalsets/globular_2cell.tex
  33. +7
    -0
      diagrams/cubicalsets/kan_condition.tex
  34. +9
    -0
      diagrams/cubicalsets/left_inv.tex
  35. +9
    -0
      diagrams/cubicalsets/naturality.tex
  36. +9
    -0
      diagrams/cubicalsets/open_box.tex
  37. +39
    -0
      diagrams/cubicalsets/open_boxes.tex
  38. +9
    -0
      diagrams/cubicalsets/right_inv.tex
  39. +19
    -0
      diagrams/cubicalsets/thin_squares.tex
  40. +1
    -0
      diagrams/eq/0cube.tex
  41. +4
    -0
      diagrams/eq/1cube.tex
  42. +6
    -0
      diagrams/eq/2cube.tex
  43. +5
    -0
      diagrams/eq/interval.tex
  44. +39
    -0
      diagrams/gm/app_gx.tex
  45. +51
    -0
      diagrams/gm/app_kgx.tex
  46. +25
    -0
      diagrams/gm/entry.tex
  47. +31
    -0
      diagrams/gm/push_g.tex
  48. +44
    -0
      diagrams/gm/push_k.tex
  49. +33
    -0
      diagrams/gm/push_x.tex
  50. +34
    -0
      diagrams/gm/slide_3.tex
  51. +25
    -0
      diagrams/gm/spine+stack.tex
  52. +14
    -0
      diagrams/gm/spine.tex
  53. +1
    -0
      diagrams/template/step1.tex
  54. +26
    -0
      diagrams/template/step2.tex
  55. +33
    -0
      diagrams/template/step3.tex
  56. +38
    -0
      diagrams/template/step4.tex
  57. +38
    -0
      diagrams/template/step4red.tex
  58. +22
    -0
      diagrams/template/step5.tex
  59. +12
    -0
      diagrams/tt/prodfx.tex
  60. +2
    -0
      hie.yaml
  61. +42
    -0
      pages/contact.md
  62. +83
    -0
      pages/index.html
  63. +13
    -0
      pages/oss.md
  64. +164
    -0
      pages/posts/.2020-09-09-typing-proof.md
  65. +309
    -0
      pages/posts/2016-08-17-parsec.md
  66. +332
    -0
      pages/posts/2016-08-23-hasochism.lhs
  67. +173
    -0
      pages/posts/2016-08-26-parsec2.lhs
  68. +155
    -0
      pages/posts/2017-08-01-delimcc.md
  69. +231
    -0
      pages/posts/2017-08-02-urnmatch.md
  70. +276
    -0
      pages/posts/2017-08-06-constraintprop.md
  71. +280
    -0
      pages/posts/2017-08-15-multimethods.md
  72. +516
    -0
      pages/posts/2017-09-08-dependent-types.md
  73. +456
    -0
      pages/posts/2018-01-18-amulet.md
  74. +610
    -0
      pages/posts/2018-02-18-amulet-tc2.md
  75. +286
    -0
      pages/posts/2018-03-14-amulet-safety.md
  76. +247
    -0
      pages/posts/2018-03-27-amulet-gadts.md
  77. +304
    -0
      pages/posts/2018-08-11-amulet-updates.md
  78. +329
    -0
      pages/posts/2019-01-28-mldelta.lhs
  79. +191
    -0
      pages/posts/2019-09-22-amulet-records.md
  80. +136
    -0
      pages/posts/2019-09-25-amc-prove.md
  81. +202
    -0
      pages/posts/2019-09-29-amc-prove-interactive.md
  82. +369
    -0
      pages/posts/2019-10-04-amulet-kinds.md
  83. +126
    -0
      pages/posts/2019-10-19-amulet-quicklook.md
  84. +1351
    -0
      pages/posts/2020-01-31-lazy-eval.lhs
  85. +380
    -0
      pages/posts/2020-07-12-continuations.md
  86. +264
    -0
      pages/posts/2020-10-30-reflecting-equality.md
  87. +638
    -0
      pages/posts/2021-01-15-induction.md
  88. +607
    -0
      pages/posts/2021-03-07-cubical.md
  89. +118
    -0
      pages/posts/2021-06-07-ax-j.md
  90. +407
    -0
      pages/posts/2021-06-21-cubical-sets.md
  91. +884
    -0
      pages/posts/2021-09-03-parsing-layout.md
  92. +420
    -0
      pages/posts/2021-09-05-outsidein-x.md
  93. +256
    -0
      pages/posts/2021-12-17-isoToEquiv.md
  94. BIN
      site
  95. +554
    -0
      site.hs
  96. +140
    -0
      static/Parser.hs
  97. +239
    -0
      static/Parser.hs.html
  98. +100
    -0
      static/demorgan-1.ml.html
  99. +3024
    -0
      static/doom.svg
  100. +119
    -0
      static/forth_machine.js

+ 15
- 0
.gitignore View File

@ -0,0 +1,15 @@
/.site
/.store
/.stack-work
/.vscode
/node_modules
/uni
/portfolio.md
/fonts
/css/fonts
/.mailmap
.katex_cache

+ 27
- 0
blag.cabal View File

@ -0,0 +1,27 @@
name: blag
version: 0.1.0.0
build-type: Simple
cabal-version: >= 1.10
executable site
main-is: site.hs
build-depends: base
, text
, hsass
, aeson
, hakyll
, pandoc
, binary
, process
, deepseq
, hashable
, directory
, containers
, bytestring
, uri-encode
, hakyll-sass
, skylighting
, pandoc-types
, unordered-containers
ghc-options: -threaded
default-language: Haskell2010

+ 98
- 0
css/agda.scss View File

@ -0,0 +1,98 @@
$code-bg: hsl(230,1%,98%);
$code-fg: #ABB2BF;
$code-red: #D65122;
$code-red-br: #AE3B36;
$code-green: #88B966;
$code-yellow: #DEB468;
$code-orange: #C58853;
$code-blue: #519DEB;
$code-pink: #C678DD;
$code-cyan: #48A8B5;
$code-white: #ABB2BF;
$code-grey: #7F848E;
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-regular.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-regular.ttf') format('truetype');
}
body {
margin: 0;
background-color:$code-bg;
color:#ABB2BF;
}
html {
background-color: $code-bg;
color:#ABB2BF;
}
pre.Agda {
margin: 0;
padding: 1em;
background-color: $code-bg;
color: $code-fg;
}
@keyframes highlight {
0% {
background-color: #F5DEB3;
}
100% {
background-color: $code-bg;
}
}
/* Aspects. */
.Agda {
.Comment { color: $code-grey; }
.Background { background-color: $code-bg; }
.Markup { color: $code-fg; }
.Keyword { color: $code-orange; }
.String { color: $code-red; }
.Number { color: $code-pink; }
.Symbol { color: $code-fg; }
.PrimitiveType { color: $code-blue; }
.Pragma { color: $code-fg; }
/* NameKinds. */
.Bound { color: $code-fg; }
.Generalizable { color: $code-fg; }
.InductiveConstructor { color: $code-green; }
.CoinductiveConstructor { color: $code-green; }
.Datatype { color: $code-blue; }
.Field { color: #F570B7; }
.Function { color: $code-blue; }
.Module { color: $code-pink; }
.Postulate { color: $code-blue; }
.Primitive { color: $code-blue; }
.Record { color: $code-blue; }
/* OtherAspects. */
.UnsolvedMeta { color: $code-fg; background: yellow }
.UnsolvedConstraint { color: $code-fg; background: yellow }
.TerminationProblem { color: $code-fg; background: #FFA07A }
.IncompletePattern { color: $code-fg; background: #F5DEB3 }
.Error { color: red; text-decoration: underline }
.TypeChecks { color: $code-fg; background: #ADD8E6 }
.Deadcode { color: $code-fg; background: #808080 }
.ShadowingInTelescope { color: $code-fg; background: #808080 }
/* Standard attributes. */
a { text-decoration: none }
a[href]:hover {
text-decoration: 2px #B4EEB4 underline dotted;
}
a[href]:target {
animation: highlight 2.5s;
}
background-color: #282C34;
font-family: 'Iosevka', 'Fantasque Sans Mono', 'Roboto Mono', monospace;
font-weight: 400;
font-size: 16pt;
}

+ 528
- 0
css/default.scss View File

@ -0,0 +1,528 @@
@import "vars.scss";
@mixin center-that-bitch {
display: flex;
flex-direction: column;
align-items: center;
}
html {
min-height: 100%;
height: 100%;
max-width: 100%;
margin: 0;
overflow-x: clip;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
width: 100%;
@include center-that-bitch;
margin: 0;
color: $bluegray-900;
font-size: $font-size;
overflow-x: clip;
}
body > header {
background-color: $purple-600;
display: flex;
height: $nav-height;
width: 100%;
z-index: 999;
position: fixed;
justify-content: space-between;
align-items: center;
padding-left: 1em;
padding-right: 1em;
border-bottom: 3px solid $purple-700;
box-sizing: border-box;
div, nav > a {
height: $nav-height;
padding-left: 0.3em;
padding-right: 0.3em;
display: flex;
align-items: center;
}
div:hover, nav > a:hover {
background-color: $purple-500;
transition: background-color 0.3s ease-in-out;
}
a {
color: white;
font-size: $font-size * 1.2;
text-decoration: none;
}
nav {
display: flex;
align-items: center;
gap: 0.5em;
}
}
@mixin left-bordered-block($color) {
padding-left: 1em;
padding-top: 0.2em;
padding-bottom: 0.2em;
border-left: 5px dashed $color;
}
@mixin material {
padding: 1em;
margin-top: 1em;
margin-bottom: 1em;
box-shadow: 2px 2px 6px black;
border-radius: 10px;
}
main {
max-width: 100ch;
width: 100%;
margin: 0px auto 0px auto;
flex: 1 0 auto;
padding: 2ch;
padding-top: $nav-height;
box-sizing: border-box;
div#title h2 {
display: none;
}
div#post-toc-container {
aside#toc {
display: none;
}
article {
grid-column: 2;
width: 100%;
line-height: 1.5;
}
}
div#post-info {
font-style: italic;
line-height: 1.2;
@include left-bordered-block($bluegray-500);
}
}
div.warning {
@include material;
background-color: $red-200;
}
figure.wraparound {
float: right;
width: auto;
margin-left: 2em;
}
figure {
overflow-x: auto;
overflow-y: clip;
width: 100%;
margin: auto;
@include center-that-bitch;
figcaption {
margin-top: 0.3em;
display: inline-block;
text-align: center;
}
p {
margin: 0;
}
}
ol, ul {
padding-left: 1.2em;
li {
margin-top: 5px;
margin-bottom: 5px;
p {
margin-top: 5px;
margin-bottom: 5px;
}
}
}
.katex-display {
> span.katex {
white-space: normal;
}
}
div.mathpar {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-items: center;
gap: 1em;
> figure {
width: auto;
max-width: 33%;
}
}
div.columns {
blockquote, details.blockquote {
padding-right: 1em;
padding-left: 1em;
padding-top: 0.2em;
padding-bottom: 0.2em;
border: 0;
}
}
code, pre, .sourceCode {
font-size: $font-size;
font-family: 'Iosevka', 'Fantasque Sans Mono', Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
font-weight: 500;
}
div.sourceCode, pre {
background-color: $code-bg;
color: $code-fg;
flex-grow: 0;
@include material;
overflow-x: auto;
line-height: 1.2;
code {
display: block;
}
> pre {
padding: unset;
margin-top: unset;
margin-bottom: unset;
box-shadow: unset;
margin: 0;
overflow-y: clip;
}
}
p > code {
white-space: nowrap;
}
blockquote, details.blockquote {
@include material;
background-color: $purple-100;
margin-left: 0;
margin-right: 0;
h2 {
margin-top: 0;
}
}
table {
width: 70%;
margin: auto;
border-collapse: collapse;
td, th {
text-align: center;
padding: 0px 1em 0px 1em;
border: 2px solid $purple-400;
}
}
ul#post-list {
list-style-type: none;
display: flex;
flex-direction: column;
.post-list-item {
@include left-bordered-block($yellow-500);
@include material;
margin: 0;
background-color: $yellow-50;
.post-list-header {
margin-top: 0.2em;
display: flex;
justify-content: space-between;
line-height: 14pt;
font-style: italic;
font-size: 10pt;
a {
font-size: 14pt;
font-style: normal;
color: $bluegray-800;
}
}
}
}
div.contact-list {
display: flex;
justify-content: space-evenly;
align-items: stretch;
gap: 3em;
div.contact-card {
background-color: $purple-200;
@include material;
width: 33%;
max-width: 33%;
flex-grow: 1;
p {
margin: 0;
}
div.contact-header {
// I really hate Pandoc sometimes
display: flex;
align-items: center;
gap: 1em;
margin-bottom: 10px;
img {
height: 48px;
clip-path: url(#squircle);
}
span.username {
font-size: 16pt;
}
}
}
}
@media only screen and (max-width: 450px) {
body > header {
div#logo {
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
}
nav {
display: none;
}
}
}
@media only screen and (min-width: 1500px) {
.narrow-only {
display: none !important;
}
main {
max-width: 100%;
> div#title {
font-size: 15pt;
h1, h2 {
margin: 0;
}
h2 {
font-style: italic;
font-weight: normal;
display: block;
z-index: 1;
}
margin-top: 0.5em;
margin-bottom: 1em;
@include center-that-bitch;
}
div#post-toc-container {
display: grid;
grid-template-columns: 0.5fr 2fr 0.5fr;
gap: 1em;
aside#toc {
display: block !important;
h3 { @include center-that-bitch; }
div#toc-container {
overflow-x: hidden;
width: 100%;
position: sticky;
top: 2em;
overflow-y: auto;
max-height: 90vh;
bottom: 2em;
ul {
border-left: 2px solid $bluegray-400;
list-style-type: none;
padding-left: 1em;
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
}
}
}
article {
max-width: 100ch;
margin-top: -100px;
margin: auto;
}
}
div.columns {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1em;
}
}
}
#index {
padding-top: 4em;
a.ico-left {
img {
clip-path: url(#squircle);
width: 96px;
height: 96px;
}
float: left;
margin-right: 1em;
width: 96px;
height: 96px;
}
a.ico-right {
img {
clip-path: url(#squircle);
width: 96px;
height: 96px;
}
float: right;
margin-left: 1em;
width: 96px;
height: 96px;
}
div#social {
display: flex;
flex-direction: row;
justify-content: center;
flex-wrap: wrap;
width: 100%;
gap: 8px;
img {
width: 48px;
height: 48px;
clip-path: url(#squircle);
transition: width 0.25s, height 0.25s;
&:hover {
width: 54px;
height: 54px;
}
}
a {
filter: drop-shadow(2px 2px 3px rgba(50, 50, 0, 0.5));
height: 54px;
}
}
display: flex;
flex-direction: column;
}
@media only screen and (min-width: 1500px) {
#index {
display: grid;
grid-template-columns: 0.20fr 0.75fr 0.20fr 1fr 0.20fr;
}
}
details {
margin-top: 1em;
margin-bottom: 1em;
}
// Styles for code
code.kw, span.kw { color: $code-pink; } /* Keyword */
code.dt, span.dt { color: $code-blue; } /* DataType */
code.dv, span.dv { color: $code-orange; } /* DecVal */
code.bn, span.bn { color: $code-orange; } /* BaseN */
code.fl, span.fl { color: $code-orange; } /* Float */
code.ch, span.ch { color: $code-green; } /* Char */
code.st, span.st { color: $code-green; } /* String */
code.co, span.co { color: $code-grey; } /* Comment */
code.ot, span.ot { color: $code-green; } /* Other */
code.al, span.al { color: #ff0000; } /* Alert */
code.fu, span.fu { color: $code-fg; } /* Function */
code.er, span.er { color: #ff0000; } /* Error */
code.wa, span.wa { color: #60a0b0; } /* Warning */
code.cn, span.cn { color: $code-orange; } /* Constant */
code.sc, span.sc { color: $code-yellow; } /* SpecialChar */
code.vs, span.vs { color: $code-blue; } /* VerbatimString */
code.ss, span.ss { color: $code-green; } /* SpecialString */
code.va, span.va { color: $code-fg; } /* Variable */
code.cf, span.cf { color: $code-pink; } /* ControlFlow */
code.op, span.op { color: $code-green; } /* Operator */
code.pp, span.pp { color: $code-orange; } /* Preprocessor */
code.at, span.at { color: $code-green; } /* Attribute */
code.do, span.do { color: $code-red; } /* Documentation */
code.an, span.an { color: $code-red; } /* Annotation */
code.cv, span.cv { color: $code-red; } /* CommentVar */

+ 419
- 0
css/fonts.scss View File

@ -0,0 +1,419 @@
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-regular.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-regular.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extended.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extended.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-oblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-oblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 400;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-oblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-oblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 400;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-italic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-italic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 400;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendeditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendeditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-medium.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-medium.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extendedmedium.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedmedium.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-mediumoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-mediumoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 500;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-mediumoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-mediumoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedmediumoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedmediumoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 500;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedmediumoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedmediumoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-mediumitalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-mediumitalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 500;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendedmediumitalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedmediumitalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-semibold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-semibold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extendedsemibold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedsemibold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-semiboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-semiboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 600;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-semiboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-semiboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedsemiboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedsemiboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 600;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedsemiboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedsemiboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-semibolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-semibolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 600;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendedsemibolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedsemibolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-bold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-bold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extendedbold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedbold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-boldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-boldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 700;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-boldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-boldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 700;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-bolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-bolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 700;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendedbolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedbolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extrabold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extrabold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extendedextrabold.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedextrabold.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extraboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extraboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 800;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-extraboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extraboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedextraboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedextraboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 800;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedextraboldoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedextraboldoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extrabolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extrabolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 800;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendedextrabolditalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedextrabolditalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: normal;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-heavy.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-heavy.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: expanded;
font-style: normal;
src: url('/static/woff2/iosevk-abbie-extendedheavy.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedheavy.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: normal;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-heavyoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-heavyoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 900;
font-stretch: normal;
src: url('/static/woff2/iosevk-abbie-heavyoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-heavyoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: expanded;
font-style: oblique;
src: url('/static/woff2/iosevk-abbie-extendedheavyoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedheavyoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka Oblique';
font-display: swap;
font-weight: 900;
font-stretch: expanded;
src: url('/static/woff2/iosevk-abbie-extendedheavyoblique.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedheavyoblique.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: normal;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-heavyitalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-heavyitalic.ttf') format('truetype');
}
@font-face {
font-family: 'Iosevka';
font-display: swap;
font-weight: 900;
font-stretch: expanded;
font-style: italic;
src: url('/static/woff2/iosevk-abbie-extendedheavyitalic.woff2') format('woff2'), url('/static/ttf/iosevk-abbie-extendedheavyitalic.ttf') format('truetype');
}

+ 1
- 0
css/katex.min.css
File diff suppressed because it is too large
View File


+ 62
- 0
css/vars.scss View File

@ -0,0 +1,62 @@
$purple-50: #faf5ff;
$purple-100: #f3e8ff;
$purple-200: #e9d5ff;
$purple-300: #d8b4fe;
$purple-400: #c084fc;
$purple-500: #a855f7;
$purple-600: #9333ea;
$purple-700: #7e22ce;
$purple-800: #6b21a8;
$purple-900: #581c87;
$yellow-50: #fefce8;
$yellow-100: #fef9c3;
$yellow-200: #fef08a;
$yellow-300: #fde047;
$yellow-400: #facc15;
$yellow-500: #eab308;
$yellow-600: #ca8a04;
$yellow-700: #a16207;
$yellow-800: #854d0e;
$yellow-900: #713f12;
$bluegray-50: #f8fafc;
$bluegray-100: #f1f5f9;
$bluegray-200: #e2e8f0;
$bluegray-300: #cbd5e1;
$bluegray-400: #94a3b8;
$bluegray-500: #64748b;
$bluegray-600: #475569;
$bluegray-700: #334155;
$bluegray-800: #1e293b;
$bluegray-900: #0f172a;
$red-50: #fef2f2;
$red-100: #fee2e2;
$red-200: #fecaca;
$red-300: #fca5a5;
$red-400: #f87171;
$red-500: #ef4444;
$red-600: #dc2626;
$red-700: #b91c1c;
$red-800: #991b1b;
$red-900: #7f1d1d;
$nav-height: 48px;
$font-size: 14pt;
$code-bg: #282C34;
$code-fg: #ABB2BF;
$code-red: #D65122;
$code-red-br: #AE3B36;
$code-green: #88B966;
$code-yellow: #DEB468;
$code-orange: #C58853;
$code-blue: #519DEB;
$code-pink: #C678DD;
$code-cyan: #48A8B5;
$code-white: #ABB2BF;
$code-grey: #7F848E;
// foo

+ 27
- 0
default.nix View File

@ -0,0 +1,27 @@
{ pkgs ? import <nixpkgs> { }, stdenv ? pkgs.stdenv }:
let
site = pkgs.haskellPackages.callCabal2nix "blag-site" ./. { };
our-texlive = with pkgs; texlive.combine {
inherit (texlive)
collection-basic
collection-latex
xcolor
preview
pgf tikz-cd
mathpazo
varwidth xkeyval standalone
jknapltx;
};
in
stdenv.mkDerivation {
name = "blag";
src = ./.;
buildInputs = with pkgs; [
poppler_utils
rubber
nodePackages.katex
our-texlive
site
];
}

+ 15
- 0
diagrams/cc/delimcc.tex View File

@ -0,0 +1,15 @@
\begin{scope}[node distance=0.75cm]
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {shift};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {foo};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -1.5) {bar};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -2.25) {reset};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -3) {baz};
\draw [red, very thick, dashed] (-3.6, -2.625) -- (-1.89, -2.625) -- (-1.89, 0.375) -- (-3.6, 0.375) -- cycle;
\draw [arrows={Latex}-] (-4, 0.375) -- (-4, -3.375);
\end{scope}

+ 2
- 0
diagrams/ctt/axes.tex View File

@ -0,0 +1,2 @@
\draw[->,thick] (0,0)--(1,0) node[midway,below]{\large{i}};
\draw[->,thick] (0,0)--(0,1) node[midway,left]{\large{j}};

+ 3
- 0
diagrams/ctt/circle.tex View File

@ -0,0 +1,3 @@
\node[draw,circle,label=below:{$\mathrm{base}$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (a0) at (0, -1) {};
\draw[->] (0, 0) circle (1cm);
\node[] (loop) at (0, 0) {$\mathrm{loop}\ i$};

+ 11
- 0
diagrams/ctt/comp_path.tex View File

@ -0,0 +1,11 @@
\node[] (i0j0) at (-1, -1) {x};
\node[] (i1j0) at (1, -1) {y};
\node[] (i0j1) at (-1, 1) {x};
\node[] (i1j1) at (1, 1) {z};
\node (in) at (0, 0) {};
\draw[->] (i0j0) -- (i0j1) node [midway] {$a$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$p(i)$};
\draw[->,dashed] (i0j1) -- (i1j1) node [midway] {};
\draw[->] (i1j0) -- (i1j1) node [midway, right] {$q(j)$};

+ 4
- 0
diagrams/ctt/eq_i0_i1.tex View File

@ -0,0 +1,4 @@
\node[draw,circle,label=left:{$i0$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=right:{$i1$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw[->] (i0) -- (i1) node [midway] {$\lambda i. i$};

+ 11
- 0
diagrams/ctt/land_connection.tex View File

@ -0,0 +1,11 @@
\node[] (i0j0) at (-1, -1) {a};
\node[] (i1j0) at (1, -1) {a};
\node[] (i0j1) at (-1, 1) {a};
\node[] (i1j1) at (1, 1) {b};
\node (in) at (0, 0) {$\lambda i j. p (i \land j)$};
\draw[->] (i0j0) -- (i0j1) node [midway] {$\lambda j. p\ i0$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$\lambda i. p\ i0$};
\draw[->] (i0j1) -- (i1j1) node [midway] {$p$};
\draw[->] (i1j0) -- (i1j1) node [midway, right] {$p$};

+ 11
- 0
diagrams/ctt/lor_connection.tex View File

@ -0,0 +1,11 @@
\node[] (i0j0) at (-1, -1) {a};
\node[] (i1j0) at (1, -1) {b};
\node[] (i0j1) at (-1, 1) {b};
\node[] (i1j1) at (1, 1) {b};
\node (in) at (0, 0) {$\lambda i j. p (i \lor j)$};
\draw[->] (i0j0) -- (i0j1) node [midway] {$p$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$p$};
\draw[->] (i0j1) -- (i1j1) node [midway] {$\lambda i. p\ i1$};
\draw[->] (i1j0) -- (i1j1) node [midway, right] {$\lambda j. p\ i1$};

+ 4
- 0
diagrams/ctt/pi_vs_pnoti_1.tex View File

@ -0,0 +1,4 @@
\node[draw,circle,label=left:{$a$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=right:{$b$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw[->] (i0) -> (i1) node [midway] {$\lambda i. p(i)$};

+ 4
- 0
diagrams/ctt/pi_vs_pnoti_2.tex View File

@ -0,0 +1,4 @@
\node[draw,circle,label=left:{$b$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=right:{$a$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw[<-] (i0) -> (i1) node [midway] {$\lambda i. p(\neg i)$};

+ 4
- 0
diagrams/ctt/refl_tt.tex View File

@ -0,0 +1,4 @@
\node[draw,circle,label=left:{$a$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=right:{$a$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw[->] (i0) -> (i1) node [midway] {$\lambda i. a$};

+ 6
- 0
diagrams/ctt/span.tex View File

@ -0,0 +1,6 @@
\node[] (i0j1) at (-1, 1) {A};
\node[] (i1j1) at (1, 1) {C};
\node[] (i0j0) at (-1, -1) {B};
\draw[<-] (i0j0) -- (i0j1) node [midway] {$f$};
\draw[->] (i0j1) -- (i1j1) node [midway] {$g$};

+ 9
- 0
diagrams/ctt/span_colimit.tex View File

@ -0,0 +1,9 @@
\node[] (i1j0) at (1, -1) {P};
\node[] (i1j1) at (1, 1) {C};
\node[] (i0j0) at (-1, -1) {B};
\node[] (i0j1) at (-1, 1) {A};
\draw[<-] (i0j0) -- (i0j1) node [midway] {$f$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$i_1$};
\draw[->] (i0j1) -- (i1j1) node [midway] {$g$};
\draw[<-] (i1j0) -- (i1j1) node [midway, right] {$i_2$};

+ 1
- 0
diagrams/ctt/transp.tex View File

@ -0,0 +1 @@
\node[draw,circle,label=below:{$a0 : A(i0)$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (a0) at (-1, 0) {};

+ 9
- 0
diagrams/ctt/univalence.tex View File

@ -0,0 +1,9 @@
\node[] (i0j1) at (-1, 1) {A};
\node[] (i1j1) at (1, 1) {B};
\node[] (i0j0) at (-1, -1) {B};
\node[] (i1j0) at (1, -1) {B};
\draw[<-] (i0j0) -- (i0j1) node [midway] {$\mathrm{equiv}$} node [midway, above, rotate=-90] {$\sim$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$B$};
\draw[->,dashed] (i0j1) -- (i1j1) node [midway] {};
\draw[<-] (i1j0) -- (i1j1) node [midway, right] {$\mathrm{id}_B$} node [midway, above, rotate=90] {$\sim$};

+ 30
- 0
diagrams/cubicalsets/acube.tex View File

@ -0,0 +1,30 @@
\node (a) at (-2.5, 2.5) {a};
\node (b) at (2.5, 2.5) {b};
\node (c) at (-2.5, -2.5) {c};
\node (d) at (2.5, -2.5) {d};
\node (w) at (-1, 1) {w};
\node (x) at (1, 1) {x};
\node (y) at (-1, -1) {y};
\node (z) at (1, -1) {z};
\draw[->] (a) -- node[midway] {f} (b);
\draw[->] (b) -- node[midway,right] {q} (d);
\draw[->] (a) -- node[midway,left] {p} (c);
\draw[->] (c) -- node[midway,below] {g} (d);
\draw[->] (w) -- node[midway,below] {h} (x);
\draw[->] (x) -- node[midway,left] {j} (z);
\draw[->] (y) -- node[midway,above] {k} (z);
\draw[->] (w) -- node[midway,right] {l} (y);
\draw[->] (a) -- node[midway] {$\upsilon$} (w);
\draw[->] (b) -- node[midway] {$\phi$} (x);
\draw[->] (c) -- node[midway] {$\chi$} (y);
\draw[->] (d) -- node[midway] {$\psi$} (z);
\node (wxyz) at (0, 0) {$\kappa$};
\node (awyc) at (-1.8, 0) {$\lambda$};
\node (awxb) at (0, 1.8) {$\mu$};
\node (bxzd) at (1.8, 0) {$\nu$};
\node (cyzd) at (0, -1.8) {$\xi$};

+ 6
- 0
diagrams/cubicalsets/aglobe.tex View File

@ -0,0 +1,6 @@
\node (a) at (-1, 0) {a};
\node (b) at (1, 0) {d};
\draw[->] (a) to[out=45,in=135] node[midway] (f) {$q \circ f$} (b);
\draw[->] (a) to[out=-45,in=-135] node[midway,below] (g) {$g \circ p$} (b);
\draw[double,->] ([yshift=-2pt]f.south) -- node[midway,right] {$\sigma$} ([yshift=2pt]g.north);

+ 10
- 0
diagrams/cubicalsets/asquare.tex View File

@ -0,0 +1,10 @@
\node (fi0j1) at (-0.75,0.75) {$a$};
\node (fi0j0) at (-0.75,-0.75) {$b$};
\node (fi1j1) at (0.75,0.75) {$c$};
\node (fi1j0) at (0.75,-0.75) {$d$};
\node (f) at (0, 0) {$\sigma$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};

+ 11
- 0
diagrams/cubicalsets/cubical_2cell.tex View File

@ -0,0 +1,11 @@
\node (atop) at (-1, 0.5) {a};
\node (abot) at (-1, -0.5) {a};
\node (btop) at (1, 0.5) {b};
\node (bbot) at (1, -0.5) {b};
\draw[->] (atop) to[out=30,in=150] node[midway] (f) {f} (btop);
\draw[->] (atop) -- (abot);
\draw[->] (abot) to[out=-30,in=-150] node[midway,below] (g) {g} (bbot);
\draw[->] (btop) -- (bbot);
\node at (0, 0) {$\alpha$};

+ 24
- 0
diagrams/cubicalsets/degeneracies.tex View File

@ -0,0 +1,24 @@
\node (a) at (-1, 0) {$a$};
\node (a0) at (0, 0.75) {$a$};
\node (a1) at (0, -0.75) {$a$};
\draw[->] (a0) -- node[midway] (al) {} (a1);
\draw[dashed,->] (a) to[] node[midway,above] {$\sigma$} ([xshift=-0.5em]al);
\node (fi0) at (1, 0.75) {$a$};
\node (fi1) at (1, -0.75) {$b$};
\draw[->] (fi0) -- node[midway,right] (f) {f} (fi1);
\node (fi0j1) at (4 + -0.75, 0.75) {$a$};
\node (fi0j0) at (4 + -0.75, -0.75) {$a$};
\node (fi1j1) at (4 + 0.75, 0.75) {$b$};
\node (fi1j0) at (4 + 0.75, -0.75) {$b$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (fs) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (gs) {f};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {};
\node (sq) at (4, 0) {$\bullet$};
\draw[dashed,->] (f) to[out=20,in=160] node[midway,below] {$\sigma_0 \circ \sigma$} (sq);

+ 9
- 0
diagrams/cubicalsets/del_asquare.tex View File

@ -0,0 +1,9 @@
\node (fi0j1) at (-0.75,0.75) {$a$};
\node (fi0j0) at (-0.75,-0.75) {$b$};
\node (fi1j1) at (0.75,0.75) {$c$};
\node (fi1j0) at (0.75,-0.75) {$d$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};

+ 17
- 0
diagrams/cubicalsets/delta10_delta0.tex View File

@ -0,0 +1,17 @@
\node (point) at (0, 0) {$\color{red}{\bullet}$};
\node (line0) at (2, 1) {$\color{blue}{\bullet}_0$};
\node (line1) at (2, -1) {$\color{red}{\bullet}_1$};
\draw (line0) -- (line1) node[midway] (linemid) {};
;
\draw[->] (point) to[out=-70,in=180] node[midway] (a) {$\delta^1$} (line1);
\node (sq00) at (4, -1) {$\color{red}\bullet_{01}$};
\node (sq01) at (4, 1) {$\color{blue}{\bullet}_{00}$};
\node (sq10) at (6, -1) {$\bullet_{11}$};
\node (sq11) at (6, 1) {$\bullet_{10}$};
\draw (sq00) -- node[midway] (linemid_img) {} (sq01) -- (sq11) -- (sq10) -- (sq00);
\draw[->] (linemid) -- node[midway] (b) {$\delta^0_0$} (linemid_img);

+ 43
- 0
diagrams/cubicalsets/facemap.tex View File

@ -0,0 +1,43 @@
\node (j1) at (0,1) {$\color{red}\bullet$};
\node (j0) at (0,0) {$\color{red}\bullet$};
\node (mid) at (0,0.5) {};
\draw[color=red] (j1) -- (j0);
\node (i0j1) at (1,1) {$\color{red}\bullet$};
\node (i0j0) at (1,0) {$\color{red}\bullet$};
\node (i1j1) at (2,1) {$\bullet$};
\node (i1j0) at (2,0) {$\bullet$};
\draw[color=red] (i0j1) -- (i0j0);
\draw (i0j1) -- (i1j1) -- (i1j0) -- (i0j0);
\node (mid2) at (1,0.5) {};
\draw[->] (mid) -> (mid2);
\node (F) at (-0.6, 0.5) {$\mathcal{F}$};
\node[fit=(j0)(i1j1), left delimiter=(, inner sep=-0.7ex, right delimiter=)] (openF) {};
\node (colon) at (2.6, 0.5) {$:$};
\node (F2) at (2.9, 0.5) {$\mathcal{F}$};
\node (fi0j1) at (3.5,1) {$\color{red}\bullet$};
\node (fi0j0) at (3.5,0) {$\color{red}\bullet$};
\node (fi1j1) at (4.5,1) {$\bullet$};
\node (fi1j0) at (4.5,0) {$\bullet$};
\draw[color=red] (fi0j1) -- (fi0j0);
\draw (fi0j1) -- (fi1j1) -- (fi1j0) -- (fi0j0);
\node[fit=(fi0j0)(fi1j1), left delimiter=(, inner sep=-0.7ex, right delimiter=)] (openF2) {};
\node (F3) at (6.1, 0.5) {$\mathcal{F}$};
\draw[->] ([xshift=2.1ex]openF2.east) -- (F3);
\node (fj1) at (6.7,1) {$\color{red}\bullet$};
\node (fj0) at (6.7,0) {$\color{red}\bullet$};
\node[fit=(fj1)(fj0), left delimiter=(, inner sep=-0.7ex, right delimiter=)] (openF3) {};
\draw[color=red] (fj1) -- (fj0);

+ 38
- 0
diagrams/cubicalsets/first_ncubes.tex View File

@ -0,0 +1,38 @@
\node at (-5, 0) {$\bullet_{()}$};
\node (line0) at (-3, 1) {$\bullet_0$};
\node (line1) at (-3, -1) {$\bullet_1$};
\draw[->] (line0) -> (line1);
\node (sq00) at (-1, 1) {$\bullet_{00}$};
\node (sq01) at (-1, -1) {$\bullet_{01}$};
\node (sq10) at (1, 1) {$\bullet_{10}$};
\node (sq11) at (1, -1) {$\bullet_{11}$};
\draw[->] (sq00) -> (sq01);
\draw[->] (sq00) -> (sq10);
\draw[->] (sq10) -> (sq11);
\draw[->] (sq01) -> (sq11);
\node (sq010) at (3, -1) {$\bullet_{000}$};
\node (sq011) at (4, 0) {$\bullet_{001}$};
\node (sq110) at (5, -1) {$\bullet_{100}$};
\node (sq111) at (6, 0) {$\bullet_{101}$};
\node (sq000) at (3, 1) {$\bullet_{010}$};
\node (sq001) at (4, 2) {$\bullet_{011}$};
\node (sq100) at (5, 1) {$\bullet_{110}$};
\node (sq101) at (6, 2) {$\bullet_{111}$};
\draw[->] (sq000) -- (sq001);
\draw[->] (sq000) -- (sq100);
\draw[->] (sq000) -- (sq010);
\draw[->] (sq001) -- (sq011);
\draw[->] (sq001) -- (sq101);
\draw[->] (sq010) -- (sq110);
\draw[->] (sq010) -- (sq011);
\draw[->] (sq100) -- (sq101);
\draw[->] (sq100) -- (sq110);
\draw[->] (sq101) -- (sq111);
\draw[->] (sq110) -- (sq111);
\draw[->] (sq011) -- (sq111);

+ 6
- 0
diagrams/cubicalsets/globular_2cell.tex View File

@ -0,0 +1,6 @@
\node (a) at (-1, 0) {a};
\node (b) at (1, 0) {b};
\draw[->] (a) to[out=30,in=150] node[midway] (f) {f} (b);
\draw[->] (a) to[out=-30,in=-150] node[midway,below] (g) {g} (b);
\draw[double,->] ([yshift=-2pt]f.south) -- node[midway,right] {$\alpha$} ([yshift=2pt]g.north);

+ 7
- 0
diagrams/cubicalsets/kan_condition.tex View File

@ -0,0 +1,7 @@
\node (open) at (0, 2) {$\sqcap^{n,i,\varepsilon}$};
\node (box) at (0, 0) {$\square^n$};
\node (set) at (2, 0) {$X$};
\draw[right hook->] (open) -- (box);
\draw[->] (open) -- node[midway] {f} (set);
\draw[dotted, ->] (box) -- node[midway, below] {g} (set);

+ 9
- 0
diagrams/cubicalsets/left_inv.tex View File

@ -0,0 +1,9 @@
\node (sq1_b00) at (-3, 1) {B};
\node (sq1_a10) at (-1, 1) {A};
\node (sq1_b01) at (-3, -1) {B};
\node (sq1_b11) at (-1, -1) {B};
\draw[dashed,->] (sq1_b00) -- node[midway] {g} (sq1_a10);
\draw[->] (sq1_a10) -> node[midway] {f} (sq1_b11);
\draw[->] (sq1_b00) -> node[midway,left] {1} (sq1_b01);
\draw[->] (sq1_b01) -> node[midway,below] {1} (sq1_b11);

+ 9
- 0
diagrams/cubicalsets/naturality.tex View File

@ -0,0 +1,9 @@
\node (sq1_b00) at (-3, 1) {$F(c\prime)$};
\node (sq1_a10) at (-1, 1) {$F(c)$};
\node (sq1_b01) at (-3, -1) {$G(c\prime)$};
\node (sq1_b11) at (-1, -1) {$G(c)$};
\draw[->] (sq1_b00) -- node[midway] {$F(f)$} (sq1_a10);
\draw[->] (sq1_a10) -> node[midway] {$\alpha_{c}$} (sq1_b11);
\draw[->] (sq1_b00) -> node[midway,left] {$\alpha_{c\prime}$} (sq1_b01);
\draw[->] (sq1_b01) -> node[midway,below] {$G(f)$} (sq1_b11);

+ 9
- 0
diagrams/cubicalsets/open_box.tex View File

@ -0,0 +1,9 @@
\node (fi0j1) at (-0.75, 0.75) {$a$};
\node (fi0j0) at (-0.75, -0.75) {$b$};
\node (fi1j1) at (0.75, 0.75) {$c$};
\node (fi1j0) at (0.75, -0.75) {$d$};
\draw[->,dotted] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};

+ 39
- 0
diagrams/cubicalsets/open_boxes.tex View File

@ -0,0 +1,39 @@
\node (fi0j1) at (-0.75, 0.75) {$a$};
\node (fi0j0) at (-0.75, -0.75) {$b$};
\node (fi1j1) at (0.75, 0.75) {$c$};
\node (fi1j0) at (0.75, -0.75) {$d$};
\draw[->,dotted] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};
\node (fi0j1) at (2.5 + -0.75, 0.75) {$a$};
\node (fi0j0) at (2.5 + -0.75, -0.75) {$b$};
\node (fi1j1) at (2.5 + 0.75, 0.75) {$c$};
\node (fi1j0) at (2.5 + 0.75, -0.75) {$d$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->,dotted] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};
\node (fi0j1) at (5 + -0.75, 0.75) {$a$};
\node (fi0j0) at (5 + -0.75, -0.75) {$b$};
\node (fi1j1) at (5 + 0.75, 0.75) {$c$};
\node (fi1j0) at (5 + 0.75, -0.75) {$d$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-,dotted] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};
\node (fi0j1) at (7.5 + -0.75, 0.75) {$a$};
\node (fi0j0) at (7.5 + -0.75, -0.75) {$b$};
\node (fi1j1) at (7.5 + 0.75, 0.75) {$c$};
\node (fi1j0) at (7.5 + 0.75, -0.75) {$d$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {g};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {p};
\draw[<-,dotted] (fi1j0) -- (fi1j1) node[midway,right] (q) {q};

+ 9
- 0
diagrams/cubicalsets/right_inv.tex View File

@ -0,0 +1,9 @@
\node (sq1_a00) at (-3, 1) {A};
\node (sq1_b10) at (-1, 1) {B};
\node (sq1_a01) at (-3, -1) {A};
\node (sq1_a11) at (-1, -1) {A};
\draw[dashed,->] (sq1_b10) -- node[midway] {h} (sq1_a11);
\draw[->] (sq1_a00) -- node[midway] {f} (sq1_b10);
\draw[->] (sq1_a00) -- node[midway,left] {1} (sq1_a01);
\draw[->] (sq1_a01) -- node[midway,below] {1} (sq1_a11);

+ 19
- 0
diagrams/cubicalsets/thin_squares.tex View File

@ -0,0 +1,19 @@
\node (fi0j1) at (-0.75, 0.75) {$a$};
\node (fi0j0) at (-0.75, -0.75) {$b$};
\node (fi1j1) at (0.75, 0.75) {$a$};
\node (fi1j0) at (0.75, -0.75) {$b$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {1};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {1};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {f};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {f};
\node (fi0j1) at (2.5 + -0.75, 0.75) {$a$};
\node (fi0j0) at (2.5 + -0.75, -0.75) {$a$};
\node (fi1j1) at (2.5 + 0.75, 0.75) {$b$};
\node (fi1j0) at (2.5 + 0.75, -0.75) {$b$};
\draw[->] (fi0j1) -- (fi1j1) node[midway] (f) {f};
\draw[->] (fi0j0) -- (fi1j0) node[midway,below] (g) {f};
\draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {1};
\draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {1};

+ 1
- 0
diagrams/eq/0cube.tex View File

@ -0,0 +1 @@
\node[draw,circle,label=right:$x:A$,fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (0, 0) {};

+ 4
- 0
diagrams/eq/1cube.tex View File

@ -0,0 +1,4 @@
\node[draw,circle,label=left:{$A[0/i]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=right:{$A[1/i]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw (i0) -- (i1);

+ 6
- 0
diagrams/eq/2cube.tex View File

@ -0,0 +1,6 @@
\node[draw,circle,label=left:{$A[0/i, 0/j]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0j0) at (-1, -1) {};
\node[draw,circle,label=right:{$A[1/i, 0/j]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1j0) at (1, -1) {};
\node[draw,circle,label=left:{$A[0/i, 1/j]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0j1) at (-1, 1) {};
\node[draw,circle,label=right:{$A[1/i, 1/j]$},fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1j1) at (1, 1) {};
\draw (i0j0) -- (i1j0) -- (i1j1) -- (i0j1) -- (i0j0);

+ 5
- 0
diagrams/eq/interval.tex View File

@ -0,0 +1,5 @@
\node[draw,circle,label=below:$i_0$,fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i0) at (-1, 0) {};
\node[draw,circle,label=below:$i_1$,fill,outer sep=0.1cm, inner sep=0pt, minimum size=0.1cm] (i1) at (1, 0) {};
\draw (i0) -- (i1) node [midway, above] (seg) {seg};
% \draw[-] (i0) -- (i1);

+ 39
- 0
diagrams/gm/app_gx.tex View File

@ -0,0 +1,39 @@
\begin{scope}[node distance=0.75cm]
\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm] at (0, 0) {@};
\node (FG) [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX] {@};
\node (X) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F) [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2] {f};
\node (G) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};
\node (GX)
[xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=F, xshift=0.75cm]
{@};
\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG) to (F.north east);
\draw[->] (FG) to (G.north west);
\draw[->] (GX) to ([shift=({-0.35cm,-0.35cm})]GX)
-- ++(0, -0.10cm)
-| (G);
\draw[->] (GX) to ([shift=({0.45cm,-0.35cm})]GX)
-| (X);
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -1.5) {};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -2.25) {};
\draw[->] (Stk0.center) to (FGX);
\draw[->] (Stk1.center) to (FG);
\draw[->] (Stk2.center) to (F);
\draw[->] (Stk3.center) to (GX);
\end{scope}

+ 51
- 0
diagrams/gm/app_kgx.tex View File

@ -0,0 +1,51 @@
\begin{scope}[node distance=0.75cm]
\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm] at (0, 0) {@};
\node (FG) [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX] {@};
\node (X) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F) [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2] {f};
\node (G) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};
\node (KGX)
[xshift=-0.55cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=F, xshift=0.75cm]
{@};
\node (K)
[xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=KGX, left of=KGX]
{K};
\node (GX)
[xshift=-0.45cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=KGX, right of=KGX]
{@};
\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG) to (F.north east);
\draw[->] (FG) to (G.north west);
\draw[->] (KGX) to (K);
\draw[->] (KGX) to (GX);
\draw[->] (GX) to ([shift=({-0.35cm,-0.35cm})]GX)
-- ++(0, -0.10cm)
-| (G);
\draw[->] (GX) to ([shift=({0.45cm,-0.35cm})]GX)
-| (X);
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -1.5) {};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -2.25) {};
\draw[->] (Stk0.center) to (FGX);
\draw[->] (Stk1.center) to (FG);
\draw[->] (Stk2.center) to (F);
\draw[->] (Stk3.center) to (KGX);
\end{scope}

+ 25
- 0
diagrams/gm/entry.tex View File

@ -0,0 +1,25 @@
\begin{scope}[node distance=0.75cm]
\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm] at (0, 0) {@};
\node (FG) [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX] {@};
\node (X) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F) [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2] {f};
\node (G) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};
\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG) to (F.north east);
\draw[->] (FG) to (G.north west);
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -1.5) {};
\draw[->] (Stk0.center) to (FGX);
\draw[->] (Stk1.center) to (FG);
\draw[->] (Stk2.center) to (F);
\end{scope}

+ 31
- 0
diagrams/gm/push_g.tex View File

@ -0,0 +1,31 @@
\begin{scope}[node distance=0.75cm]
\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm] at (0, 0) {@};
\node (FG) [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX] {@};
\node (X) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F) [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2] {f};
\node (G) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};
\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG) to (F.north east);
\draw[->] (FG) to (G.north west);
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -1.5) {};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -2.25) {};
\node (Stk4) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -3) {};
\draw[->] (Stk0.center) to (FGX);
\draw[->] (Stk1.center) to (FG);
\draw[->] (Stk2.center) to (F);
\draw[->] (Stk3.center) to (X |- 0, -2.25cm) -- (X);
\draw[->] (Stk4.center) to (G |- 0, -3cm) -- (G);
\end{scope}

+ 44
- 0
diagrams/gm/push_k.tex View File

@ -0,0 +1,44 @@
\begin{scope}[node distance=0.75cm]
\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm] at (0, 0) {@};
\node (FG) [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX] {@};
\node (X) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F) [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2] {f};
\node (G) [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};
\node (GX)
[xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=F, xshift=0.75cm]
{@};
\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG) to (F.north east);
\draw[->] (FG) to (G.north west);
\draw[->] (GX) to ([shift=({-0.35cm,-0.35cm})]GX)
-- ++(0, -0.10cm)
-| (G);
\draw[->] (GX) to ([shift=({0.45cm,-0.35cm})]GX)
-| (X);
\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, 0) {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]