This commit is contained in:
Boyan 2025-04-19 13:36:03 +02:00
commit 29f7c07e4c
16 changed files with 233 additions and 294 deletions

3
.obsidian/app.json vendored
View File

@ -8,5 +8,6 @@
},
"alwaysUpdateLinks": true,
"useMarkdownLinks": true,
"promptDelete": false
"promptDelete": false,
"readableLineLength": false
}

View File

@ -46,6 +46,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.665400791557209,
"scale": 0.9981011873358133,
"close": false
}

View File

@ -1,272 +0,0 @@
{
"main": {
"id": "0e274d9edc8c2fe9",
"type": "split",
"children": [
{
"id": "0f03a1a547c0e7e7",
"type": "tabs",
"children": [
{
"id": "76bee43de3990bf8",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Software Engineering/TA Meeting 1.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "TA Meeting 1"
}
},
{
"id": "f76f297000da99ca",
"type": "leaf",
"state": {
"type": "release-notes",
"state": {
"currentVersion": "1.8.9"
},
"icon": "lucide-book-up",
"title": "Release Notes 1.8.9"
}
}
],
"currentTab": 1
}
],
"direction": "vertical"
},
"left": {
"id": "14a8ed1946809664",
"type": "split",
"children": [
{
"id": "92972e07e7778c7e",
"type": "tabs",
"children": [
{
"id": "56bef0584922cba9",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "919f0d89f8f5c3bb",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "b590c125634ae7e4",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 234.5
},
"right": {
"id": "fd4347e6b5300816",
"type": "split",
"children": [
{
"id": "5d827a80e07e299e",
"type": "tabs",
"children": [
{
"id": "10adbcc903d0c352",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "Extracurricular/Circuitree/Committee Market/discussion/Macro pad.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for Macro pad"
}
},
{
"id": "d61fc22784bbd3b0",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "Extracurricular/Circuitree/Committee Market/discussion/Macro pad.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Macro pad"
}
},
{
"id": "c6317bbbe070400b",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "9fea917e949ad714",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "Extracurricular/Circuitree/Committee Market/discussion/Macro pad.md"
},
"icon": "lucide-list",
"title": "Outline of Macro pad"
}
},
{
"id": "e195b03d8630d307",
"type": "leaf",
"state": {
"type": "QUICKSHARE_SIDE_VIEW",
"state": {},
"icon": "lucide-file",
"title": "Plugin no longer active"
}
},
{
"id": "ac10c8e987c0e736",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "git-pull-request",
"title": "Source Control"
}
},
{
"id": "9a5124aa0b3cede4",
"type": "leaf",
"state": {
"type": "transcript-view",
"state": {},
"icon": "lucide-file",
"title": "Plugin no longer active"
}
}
],
"currentTab": 5
}
],
"direction": "horizontal",
"width": 200,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"obsidian-excalidraw-plugin:Create new drawing": false,
"table-editor-obsidian:Advanced Tables Toolbar": false,
"obsidian-git:Open Git source control": false,
"obsidian-advanced-slides:Show Slide Preview": false,
"omnisearch:Omnisearch": false
}
},
"active": "f76f297000da99ca",
"lastOpenFiles": [
"Software Engineering/TA Meeting 1.md",
"Fundamentals of Electronics/Introductory Lecture.md",
"Introduction to Machine Learning/Introductory lecture.md",
"Fundamentals of Electronics",
"Pasted image 20250113151159.png",
"Advanced Algorithms/Graph Algorithms.md",
"Advanced Algorithms/Graphs.md",
"Introduction to Machine Learning/image.png",
"Extracurricular/Circuitree/Committee Market/Macro pad.md",
"Extracurricular/Circuitree/Committee Market/discussion/Committee market ideas.md",
"Extracurricular/Circuitree/Committee Market/discussion/CA.md",
"Extracurricular/Misc/Plan.md",
"Extracurricular/Misc/Proposed Routine Plan.canvas",
"Extracurricular/Misc/Ideas.md",
"Functional Programming/Eq and Num.md",
"Functional Programming/Proofs.md",
"Operating Systems/Introductory lecture.md",
"Discrete Structures/Relations and Digraphs.md",
"Operating Systems/assets/Pasted image 20250204103541.png",
"Software Engineering/Introductory Lecture.md",
"Discrete Structures/Recurrence relations.md",
"Discrete Structures/Mathematical Proofs (Induction).md",
"Discrete Structures/Counting.md",
"Introduction to Machine Learning",
"Operating Systems/assets/image.png",
"Operating Systems/image.png",
"Operating Systems/assets",
"conflict-files-obsidian-git.md",
"Statistics and Probability/Mock exam run 1.md",
"Operating Systems",
"Statistics and Probability/Support Lecture.md",
"Software Engineering",
"Functional Programming/Drawing 2024-12-24 17.52.22.excalidraw.md",
"Extracurricular/satQuest/Meeting Dec 18.md",
"Extracurricular/satQuest/img/Pasted image 20241218122110.png",
"Excalidraw/Drawing 2024-12-11 23.27.51.excalidraw.md",
"Discrete Structures/Midterm/attempt 2.md",
"Discrete Structures/Midterm/attempt 1.md",
"Discrete Structures/Midterm",
"Extracurricular/satQuest/img/Pasted image 20241206134156.png",
"Untitled.canvas",
"Advanced Algorithms/Pasted image 20241203234600.png",
"Excalidraw",
"Extracurricular/satQuest/img/Pasted image 20241206134213.png",
"Extracurricular/satQuest/img/Pasted image 20241206134207.png",
"Extracurricular/satQuest/img",
"Advanced Algorithms/assets/pnp",
"Advanced Algorithms/assets/graph",
"Web Engineering/canvae/server_client.canvas",
"Advanced Programming/projects/second/Refactoring.canvas",
"Advanced Programming/assets/assignment/assignment_organization.canvas",
"Advanced Programming/assets/spring/Beans.canvas",
"Advanced Programming/assets/assignment/assignment_app.canvas",
"Extracurricular/Circuitree/Committee Market/discussion/Proposed showcase infra.canvas"
]
}

View File

@ -0,0 +1,18 @@
```mermaid
sequenceDiagram
Prototype ->> Order: Meeting with everyone
Order ->> Prepare: Not everyone has to be present
```
## Next week
- Early, need to organize a meeting to build the antenna
- Purchase the materials right after
- Schedule the event
## All times
- Create slides

View File

@ -22,6 +22,16 @@
"color": "6",
"label": "Productivity"
},
{
"id": "37abaca3fa89fb9b",
"type": "text",
"text": "Better mental and productivity",
"styleAttributes": {},
"x": 799,
"y": 681,
"width": 294,
"height": 60
},
{
"id": "6dc127fe4098cce8",
"type": "text",
@ -42,16 +52,6 @@
"width": 250,
"height": 60
},
{
"id": "2b76b4366e7d7447",
"type": "text",
"text": "Consistency in terms of Uni",
"styleAttributes": {},
"x": 713,
"y": 354,
"width": 280,
"height": 60
},
{
"id": "5159e3993f95efcb",
"type": "text",
@ -112,16 +112,6 @@
"width": 283,
"height": 60
},
{
"id": "37abaca3fa89fb9b",
"type": "text",
"text": "Better mental and productivity",
"styleAttributes": {},
"x": 799,
"y": 681,
"width": 294,
"height": 60
},
{
"id": "3aa369dab5e52be1",
"type": "text",
@ -161,6 +151,16 @@
"y": 800,
"width": 181,
"height": 60
},
{
"id": "2b76b4366e7d7447",
"type": "text",
"text": "Consistency in terms of Uni",
"styleAttributes": {},
"x": 713,
"y": 354,
"width": 280,
"height": 60
}
],
"edges": [

View File

@ -0,0 +1,55 @@
---
type: theoretical
ty:
---
## The foundations of computation
Looking for answers for basic questions like:
- Computability?
- Power $\leftrightarrow$ Programming constructs?
Which leads us to fundamental concepts like:
- State
- Transitions
- Non-determinism
- Undecideability
## Models
### Finite memory
Finite automata, regexp
![](Pasted%20image%2020250414190100.png)
### Finite memory with stack
Push down automata
![](Pasted%20image%2020250414190119.png)
### Unrestricted
Turing machines
![](Pasted%20image%2020250414190144.png)
## Grammars
![](Pasted%20image%2020250414190229.png)
On a higher level, it seems like grammars and machines are very different, but parsing a language (a set of strings) is quite similar to computation.
## State-based systems and glossary
An FSM can be a specification for OOP.
- States ($q_0,\ldots, q_n$)
- Transitions ($a,b,c,\ldots,z$)
- We can interpret the transitions as class methods and specify the sequences of allowed invocations - **typestate**
## Notation
- $x \in X, X\subseteq Y$
- $\forall x \in X: P(x), \exists x \in X: P(x)$
- $R \subseteq X \times Y$ is a relation between $X$ and $Y$
- $xRy \equiv (x,y) \in R$
- $G = (V, E)$, where $E \subseteq V\times V$ is a directed graph
Part of [Relations and Digraphs](Relations%20and%20Digraphs.md)

View File

@ -0,0 +1,61 @@
---
type: math
---
## Induction
Similar (if not the same) to:
- [Mathematical Proofs (Induction)](Mathematical%20Proofs%20(Induction).md)
- [Structural Proofs](Proofs.md)
- Base case $0\in \mathbb{N}$
- Inductive step - if $n\in \mathbb{N} \implies n+1\in \mathbb{N}$
- We allow a finite number of steps
I.e.
Given $f (n) = n(n + 1)$ for all $n\in N$, then $f (n)$ is even.
**Base case:** $f(0) = 0\times 1 = 0$, which is even
**I.S.:**
$$
f(n+1) = (n+1)(n+2)= n(n+1)+2(n+1) = f(n) + 2(n+1) \blacksquare
$$
## Strings and Languages
Literally the same as [Mathematical Data Structures](Mathematical%20Data%20Structures.md), but on strings
How to define the reversal of a string, inductively?
Let $w$ be a finite string. We define $w^R$ by induction on $|w|$:
**B.C.:**
$|w| = 0$, then, trivially, $w = \epsilon \therefore w^R = \epsilon$
**I.S.:**
$|w| = n \geq 1$, so $w = u a$ with $|u| = n-1$,
## Operations on strings
- Concatenation (associative)
- Substring, prefix, suffix
- Replication (exponentiation): a string concatenated with itself
- Reversal ($u^R$)
## Operations on languages
- Lifting operations on strings to languages
- Concatenation of languages
- Kleene star - $V^*$ -> smallest superset[^1] of V that contains the empty string and is closed under concatenation, i.e. one or more repetitions
- Reversal
## Regular sets / languages
This used to be in DS, but I don't have it in this repo.
Recursively defined over an alphabet $\Sigma$ from
- $\emptyset$
- $\{\epsilon\}$
- $\{a\} | \forall a \in \Sigma$
Regex is a notatio nto denote regular languages, i.e.:
[^1]: The opposite of a subset - a set which contains all elements of another (and possibly more)

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 KiB

View File

@ -0,0 +1,24 @@
### Logistics
- Will we have access to an overview of the project roadmap, including deliverables?\
> **No. It is a research project, hence no deliverables and such.**
- Do you need us to use specific project management tools (e.g. GitHub, Jira, etc.)?
- How often are you available? Is it possible to have weekly progress reports?
> Every week is good.
### Formal Verification
- What is the expected level of background in Coq or formal methods?
> It's possible to catch up to speed in a couple of months
- Can you explain the process by which a smart contract's safety properties will be validated formally?
- Are there any existing case studies or example proofs we might refer to for a better understanding of the expected output?
> You will be linked to existing projects
- Define the contract verification criteria
### Project scope clarifications
- Among the seven smart contracts being verified, which ones do you expect us to work on, and why those?
- Which technologies are we going to be introduced to, if any? Will we have access to guides for Coq and Solidity?
- How do you envision the high-level Coq framework integrating with existing Solidity projects?
### Optional
- How much of the formal verification process will be based on axioms versus fully constructive proofs?
- Could you elaborate on the notion of “high-level primitives” (e.g., identity, item, property) and how flexible they need to be for different types of contracts?
- Could you specify what you mean by "real numbers and integer approximations"? Is it related to precision with math? How does that impact the security of a smart contract? Practical example?

View File

@ -0,0 +1,33 @@
## Intro
- Formalland 2 years old
- Formal verification for code, proofs
- Find a way to fully specify smart contracts
- Formal verification as means of security (no bugs -> no stealing)
- Alternatives include:
- Testing (Unit, Value)
- Human expertise
- Quite niche in the field of computer science
- We can be sure that the program follows intended behavior after verification
## Smart contracts
- Notion of users
- Admin - owner
- We need to look through some examples [here](https://formal.land/docs/tools/coq-of-solidity/specification-project) to get a feel for them.
- Motivated by bugs [listed here](https://github.com/kadenzipfel/smart-contract-vulnerabilities)
### Example of Smart Contract
- Stablecoins (USDC)
- Possible specification(?) is to state that the amount of coins is fixed
## Work
- Solidity
- VSC online
### Questions during the meeting
- What is the difference between a user and an admin in the context of smart contracts?
- You mentioned that one possible specification is to state that the amount of coins is fixed. How does that relate to formal verification? To our project?
- Is the idea to design a DSL? Could you elaborate on the specifics? Do you have a write-up about it or do we need to come up with it?
> Yes. We want to simplify formal verification of smart contracts by creating a DSL.

View File

@ -0,0 +1,2 @@
End goal: Represent all 7 smart contracts in our DSL

View File

@ -0,0 +1,17 @@
# Conflicts
Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`
(This file will automatically be deleted before commit)
[[#Additional Instructions]] available below file list
- Not a file: .obsidian/workspace.json
# Additional Instructions
I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text.
```diff
<<<<<<< HEAD
File changes in local repository
=======
File changes in remote repository
>>>>>>> origin/main
```