My undergraduate thesis on a capability based security system for a data-centric operating system.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

replaced with local template

+244 -6
+1 -1
2-my-logic.typ
··· 1 - #import "@preview/illc-mol-thesis:0.2.0": * 1 + #import "template.typ": * 2 2 3 3 #mol-chapter("My Logic") 4 4
+2 -1
3-examples.typ
··· 1 - #import "@preview/illc-mol-thesis:0.2.0": * 1 + #import "template.typ": * 2 + 2 3 3 4 #mol-chapter("Examples") 4 5
+228
template.typ
··· 1 + 2 + #import "@preview/great-theorems:0.1.2": * 3 + #import "@preview/rich-counters:0.2.2": * 4 + 5 + // A show rule for the template. 6 + #let mol-thesis(body) = [ 7 + /* 8 + LaTeX-like look from https://typst.app/docs/guides/guide-for-latex-users, 9 + tweaked to look like https://codeberg.org/m4lvin/illc-mol-thesis-template 10 + (page margins cannot quite be the same, as Typst and LaTeX 11 + handle margins/paddings somewhat differently). 12 + 13 + Of course, we still comply with article A, comma 2 of the "Rules and 14 + Guidelines of the Examinations Board Logic" 15 + (https://msclogic.illc.uva.nl/current-students/regulations/oer/). 16 + */ 17 + #set page(margin: (bottom: 2.8cm, rest: 2.1cm), footer-descent: 40%) 18 + #set par(leading: .85em, first-line-indent: 1.8em, justify: true) 19 + #set text(font: "New Computer Modern", size: 11pt) 20 + // New computer Moderno Mono is not shipped with Typst, and it would be 21 + // excessive to only ship it with the package for raw text, as it requires its 22 + // own CLi flag 23 + // #show raw: set text(font: "New Computer Modern Mono") 24 + #show heading: set block(above: 1.4em, below: 1em) 25 + 26 + // MoL thesis look from https://codeberg.org/m4lvin/illc-mol-thesis-template 27 + #set page(numbering: "1") 28 + #set heading(numbering: "1.1.1.1") 29 + #set outline.entry(fill: repeat(". ")) 30 + #show outline.entry.where( 31 + level: 1 32 + ): set block(above: 1.5em) 33 + #show outline.entry.where(level: 1): it => [ 34 + #set block(above: 1.5em) 35 + *#link(it.element.location(), it.indented(it.prefix(), it.inner()))* 36 + ] 37 + 38 + #set cite(style: "alphanumeric") 39 + #set bibliography(style: "elsevier-vancouver") 40 + #show: great-theorems-init 41 + 42 + #body 43 + ] 44 + 45 + // A parametric, non-numbered thesis titlepage that follows the 46 + // recommendations of the Master of Logic. 47 + #let mol-titlepage( 48 + title: "Title of the Thesis", 49 + author: "John Q. Public", 50 + birth-date: "April 1st, 1980", 51 + birth-place: "Alice Springs, Australia", 52 + defence-date: "August 28, 2005", 53 + supervisors: ("Dr Jack Smith", "Prof Dr Jane Williams"), 54 + committee: ( 55 + "Dr Jack Smith", 56 + "Prof Dr Jane Williams", 57 + "Dr Jill Jones", 58 + "Dr Albert Heijn"), 59 + degree: "MSc in Logic" 60 + ) = align(alignment.center)[ 61 + // Size of the thesis's title 62 + #let title-size = 17pt 63 + // Size of frontpage elements that should be smaller of the thesis's title 64 + // alone 65 + #let subtitle-size = 12pt 66 + 67 + #set page(numbering: none, margin: (bottom: 3.5cm)) 68 + #set par(spacing: 1.45em) 69 + 70 + #v(30pt) 71 + 72 + #text(smallcaps(title), size: title-size, weight: 100) 73 + 74 + #v(40pt) 75 + 76 + #text([*MSc Thesis* _(Afstudeerscriptie)_], size: subtitle-size) 77 + 78 + written by 79 + 80 + *#author* 81 + 82 + under the supervision of #supervisors.map(x => [*#x*]).join(", ", last: 83 + " and "), and submitted to the 84 + 85 + Examinations Board in partial fulfilment of the requirements for the 86 + degree of 87 + 88 + #text([*#degree*], size: subtitle-size) 89 + 90 + at the _Universiteit van Amsterdam_. 91 + 92 + #v(50pt) 93 + 94 + #box(width: 75%, 95 + columns(2, gutter: -10%, 96 + align(alignment.left, [ 97 + #set par(first-line-indent: 0em) 98 + 99 + *Date of the public defence:* 100 + 101 + _#defence-date _ 102 + 103 + #colbreak() 104 + 105 + *Members of the Thesis Committee:* 106 + 107 + #committee.join("\n") 108 + ]) 109 + ) 110 + ) 111 + 112 + // #align(bottom, image("../img/illclogo.svg", alt: "ILLC Logo. A 3-by-3 jigsaw puzzle. The 113 + // center piece is white, while the surrounding pieces are black. The text 114 + // below the puzzle reads 'Institute for Logic, Language, and Computation'", 115 + // width: 60%)) 116 + 117 + #pagebreak() 118 + ] 119 + 120 + // A non-numbered page dedicated to the thesis abstract. 121 + #let mol-abstract(body) = [ 122 + #set page(numbering: none) 123 + #align(center+horizon, heading("Abstract", numbering: none, outlined: false)) 124 + #body 125 + #pagebreak() 126 + #counter(page).update(1) 127 + ] 128 + 129 + // A first-level heading dedicated to thesis chapters. 130 + #let mol-chapter(body) = [ 131 + #pagebreak() 132 + #hide( 133 + heading(body, 134 + hanging-indent: 0pt, 135 + level: 1, 136 + supplement: [Chapter]) 137 + ) 138 + #text(size: 28pt, weight: "bold")[ 139 + #set par(first-line-indent: 0pt) 140 + #text(size: 24pt, [Chapter #context counter(heading).display()]) 141 + 142 + #body] 143 + ] 144 + 145 + // A counter for mathematical blocks 146 + #let mathcounter = rich-counter( 147 + identifier: "mathblocks", 148 + inherited_levels: 1 149 + ) 150 + 151 + // A block for mathematical definitions 152 + #let definition = mathblock( 153 + blocktitle: "Definition", 154 + counter: mathcounter 155 + ) 156 + 157 + // A block for mathematical theorems 158 + #let theorem = mathblock( 159 + blocktitle: "Theorem", 160 + counter: mathcounter 161 + ) 162 + 163 + // A block for mathematical examples 164 + #let example = mathblock( 165 + blocktitle: "Example", 166 + counter: mathcounter 167 + ) 168 + 169 + // A block for mathematical propositions 170 + #let proposition = mathblock( 171 + blocktitle: "Proposition", 172 + counter: mathcounter 173 + ) 174 + 175 + // A block for mathematical lemmas 176 + #let lemma = mathblock( 177 + blocktitle: "Lemma", 178 + counter: mathcounter 179 + ) 180 + 181 + // A block for mathematical corollaries 182 + #let corollary = mathblock( 183 + blocktitle: "Corollary", 184 + counter: mathcounter 185 + ) 186 + 187 + // A block for mathematical remarks 188 + #let remark = mathblock( 189 + blocktitle: "Remark", 190 + prefix: [_Remark._] 191 + ) 192 + 193 + // A block for mathematical proofs 194 + #let proof = proofblock() 195 + 196 + // Bibliography function that does not throw an error if called multiple times. 197 + // This allows you to invoke it once per file in your thesis. This is important, 198 + // because Typst would otherwise raise an error if you were to cite a source in 199 + // a file with no bibliography. 200 + // 201 + // https://forum.typst.app/t/how-to-share-bibliography-in-a-multi-file-setup/1605/9 202 + // 203 + // If invoked with "true", it actually displays the bibliography. 204 + // 205 + // ```typst 206 + // // main.typ 207 + // #include "chapter-1.typ" 208 + // #load-bib(read("works.bib"), main: true) 209 + // ``` 210 + // 211 + // Otherwise, it still makes the sources citable in the current file. Should be 212 + // invoked with "true" at most once. 213 + // 214 + // ```typst 215 + // // chapter-1.typ 216 + // We build on the work of @Author_2025. 217 + // #load-bib(read("works.bib")) 218 + // ``` 219 + #let load-bib(sources, main: false) = { 220 + counter("illc-mol-thesis-bibs").step() 221 + context if main { 222 + [#bibliography(bytes(sources)) <main-bib>] 223 + } else if (counter("illc-mol-thesis-bibs").get().first() == 1 and 224 + query(<main-bib>) == ()) { 225 + // This is the first bibliography, and there is no main bibliography 226 + bibliography(bytes(sources)) 227 + } 228 + }
thesis.pdf

This is a binary file and will not be displayed.

+13 -4
thesis.typ
··· 1 - #import "@preview/illc-mol-thesis:0.2.0": * 1 + #import "template.typ": * 2 2 3 3 #show: mol-thesis 4 4 5 + 6 + // what am i even supposed to write about maneeee 7 + // 8 + // what have i even done 9 + // 10 + // am i a fraud 11 + // 12 + // 13 + 5 14 #mol-titlepage( 6 15 title: "Title of the Thesis", 7 - author: "John Q. Public", 16 + author: "Surendra Jammishetti", 8 17 birth-date: "April 1st, 1980", 9 18 birth-place: "Alice Springs, Australia", 10 19 defence-date: "August 28, 2005", 11 20 /* Only one supervisor? The singleton array ("Dr Jack Smith",) needs the 12 21 trailing comma. */ 13 - supervisors: ("Dr Jack Smith", "Prof Dr Jane Williams"), 22 + supervisors: ("Owen B. Arden",), 14 23 committee: ( 15 24 "Dr Jack Smith", 16 25 "Prof Dr Jane Williams", 17 26 "Dr Jill Jones", 18 27 "Dr Albert Heijn"), 19 - degree: "MSc in Logic" 28 + degree: "Undergraduate Thesis" 20 29 ) 21 30 22 31 #mol-abstract[