Files
org_roam/output/20250120113936-afp_lab_1.html

476 lines
16 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-12-28 Sun 20:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>afp_lab_1</title>
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" href="/assets/styles/style.css" />
<link rel="stylesheet" href="/assets/styles/bigger-picture.min.css" />
<link rel="stylesheet" href="/assets/styles/media.css" />
<script src="/assets/scripts/script.js" defer></script>
<script src="/assets/scripts/search.js" defer></script>
<script src="/assets/scripts/bigger-picture.min.js" defer></script>
<script src="/assets/scripts/svg-pan-zoom.min.js" defer></script>
<script src="/assets/scripts/gallery-init.js" defer></script>
</head>
<body>
<div id="preamble" class="status">
<div class="banner-header">
<div class="banner-left">
<a href="/20241210233721-brain_moc.html"> <img src="/assets/gr.png" alt="Site Logo" class="banner-logo" /> </a>
<div id="updated">Updated: 2025-12-28 Sun 19:48</div>
</div>
<div class="banner-search">
<input id="search-box"
type="search"
placeholder="Search notes…"
aria-label="Search notes"
autocomplete="off" />
<div id="search-results"></div>
</div>
<button id="close-all">Close All</button>
</div>
</div>
<div id="stack-root">
<div class="stack-track">
<article class="stack-pane pane-root" data-url="/20250120113936-afp_lab_1.html">
<div id="content" class="content">
<div class="title-section">
<div class="title-controls">
<button class="pane-fullscreen" aria-label="Fullscreen">F</button>
<button class="pane-edit" aria-label="Edit pane">E</button>
<button class="pane-close" aria-label="Close pane">×</button>
</div>
<h1 class="title">afp<sub>lab</sub><sub>1</sub></h1>
<div class="title-metadata">
<span class="metadata-item">
<span class="metadata-label">planted:</span>
<span class="metadata-value">2025-01-20</span>
</span>
<span class="metadata-item">
<span class="metadata-label">last tended to:</span>
<span class="metadata-value">2025-12-28</span>
</span>
</div>
</div>
<p>
<span class="timestamp-wrapper"><span class="timestamp">&lt;2025-01-20 Mon&gt; </span></span>
</p>
<div id="outline-container-org6ed8c49" class="outline-2">
<h2 id="org6ed8c49"><a href="#org6ed8c49">Installation of Agda:</a></h2>
<div class="outline-text-2" id="text-org6ed8c49">
</div>
<div id="outline-container-org9d1e75c" class="outline-3">
<h3 id="org9d1e75c"><a href="#org9d1e75c">Step 1</a></h3>
<div class="outline-text-3" id="text-org9d1e75c">
<div class="org-src-container">
<pre class="src src-eshell">sudo apt-get install zlib1g-dev libncurses5-dev
</pre>
</div>
<p>
then install ghc
</p>
<ul class="org-ul">
<li><a href="https://www.haskell.org/ghcup/">https://www.haskell.org/ghcup/</a></li>
</ul>
<p>
Now that you have cabal installed, use it to install Agda as a Haskell package:
</p>
<div class="org-src-container">
<pre class="src src-eshell">cabal update
cabal install Agda
</pre>
</div>
</div>
</div>
<div id="outline-container-orge5f2a86" class="outline-3">
<h3 id="orge5f2a86"><a href="#orge5f2a86">Step 2</a></h3>
<div class="outline-text-3" id="text-orge5f2a86">
<p>
Most users will want to install the standard library. You can install this as any other Agda library (see Library Management). See the agda-stdlib projects installation instructions for the steps to take to install the latest version.
<a href="https://github.com/agda/agda-stdlib">https://github.com/agda/agda-stdlib</a>
<a href="https://agda.readthedocs.io/en/latest/tools/package-system.html#package-system">https://agda.readthedocs.io/en/latest/tools/package-system.html#package-system</a>
</p>
</div>
</div>
</div>
<div id="outline-container-org885bf78" class="outline-2">
<h2 id="org885bf78"><a href="#org885bf78">Exercises:</a></h2>
<div class="outline-text-2" id="text-org885bf78">
<p>
<a href="file:///home/zaine/master-folder/Uni/ADVFUNC/afp-learning-2024-2025/files/LectureNotes/files/exercises/my-lab1.lagda.md">my lab1</a>
</p>
<p>
```agda
data Bool : Type where
true false : Bool
```
</p>
<p>
In Agda, the snippet `data Bool : Type where true false : Bool` is a definition of a simple data type named `Bool`. Lets break down and explain all the components and words in this snippet:
</p>
<p>
&#x2014;
</p>
<p>
### 1. <b><b>`data`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it means:</b></b> This keyword introduces a new <b>data type</b> definition in Agda.</li>
<li><b><b>Purpose:</b></b> Defines a type that consists of one or more <b>constructors</b>, which are used to create values of the type.</li>
<li><b><b>In this case:</b></b> The `data` keyword is used to define the `Bool` type.</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 2. <b><b>`Bool`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it is:</b></b> The name of the data type being defined.</li>
<li><b><b>Purpose:</b></b> Represents a type that has exactly two possible values: `true` and `false`.</li>
<li><b><b>In this case:</b></b> `Bool` is a common type used to represent truth values in logic (true or false).</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 3. <b><b>`:` (colon)</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it means:</b></b> Indicates a type declaration in Agda.</li>
<li><b><b>Purpose:</b></b> Separates the name of the data type (`Bool`) from its type (`Type`).</li>
<li><b><b>In this case:</b></b> `Bool : Type` declares that `Bool` is a type itself (i.e., a type of values).</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 4. <b><b>`Type`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it is:</b></b> The universe of all types in Agda.</li>
<li><b><b>Purpose:</b></b> In Agda, types are first-class citizens, and `Type` represents the &ldquo;type of types.&rdquo; For instance:
<ul class="org-ul">
<li>`Bool : Type` means `Bool` is a type.</li>
<li>If you define a type ` : Type` for natural numbers, it also belongs to `Type`.</li>
</ul></li>
<li><b><b>In this case:</b></b> `Bool` is defined as a type that belongs to this universe.</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 5. <b><b>`where`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it means:</b></b> Introduces the constructors (values) of the type.</li>
<li><b><b>Purpose:</b></b> Lists the specific ways you can construct or create values of the newly defined type.</li>
<li><b><b>In this case:</b></b> `where` introduces the two constructors, `true` and `false`, which are the only possible values of the `Bool` type.</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 6. <b><b>`true false`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What they are:</b></b> The <b>constructors</b> of the `Bool` type.</li>
<li><b><b>Purpose:</b></b> Constructors are functions (or constants) that produce values of the type. Here:
<ul class="org-ul">
<li>`true : Bool` means `true` is a value of type `Bool`.</li>
<li>`false : Bool` means `false` is a value of type `Bool`.</li>
</ul></li>
<li><b><b>In this case:</b></b> These two constructors define all possible values of `Bool`.</li>
</ul>
<p>
&#x2014;
</p>
<p>
### 7. <b><b>`Bool` after the `:`</b></b>
</p>
<ul class="org-ul">
<li><b><b>What it means:</b></b> Specifies the type of each constructor.</li>
<li><b><b>Purpose:</b></b> Ensures that each constructor produces a value of the correct type (`Bool` in this case).</li>
<li><b><b>In this case:</b></b> Both `true` and `false` are of type `Bool`.</li>
</ul>
<p>
&#x2014;
</p>
<p>
### Complete Meaning
The entire definition can be read as:
</p>
<ol class="org-ol">
<li>Define a new type called `Bool`.</li>
<li>`Bool` belongs to the universe of types (`Type`).</li>
<li>The `Bool` type has two constructors:
<ul class="org-ul">
<li>`true` (a value of type `Bool`).</li>
<li>`false` (a value of type `Bool`).</li>
</ul></li>
</ol>
<p>
&#x2014;
</p>
<p>
### Example Usage in Agda
You can use `Bool` in various ways:
```agda
&#x2013; A function that negates a Bool
not : Bool → Bool
not true = false
not false = true
</p>
<p>
&#x2013; A value of type Bool
myBool : Bool
myBool = true
```
</p>
<p>
This showcases how the `Bool` type and its constructors (`true` and `false`) can be used in programs.
</p>
<p class="backlinks-section" id="backlinks">
Backlinks
</p>
<ul class="org-ul backlinks-list">
<li><a href="20250120111047-afp_week1.html#ID-6c272430-aff5-468b-90d3-5ff3a96152cf">afp<sub>week1</sub></a></li>
</ul>
</div>
</div>
</div>
</div></article></div></div>
<div id="postamble" class="status">
<footer>
<div class="copyright-container">
<div class="copyright">
Copyright &copy; 2022-2025 Zaine Qayyum. All rights reserved unless otherwise noted.</div></div>
<div class="generated">
Created with <a href="https://www.gnu.org/software/emacs/">Emacs</a> 30.2 (<a href="https://orgmode.org">Org</a> mode 9.7.11) on <a href="https://www.archlinux.org/">Arch</a> <a href="https://www.gnu.org">GNU</a>/<a href="https://www.kernel.org/">Linux</a>
</div>
</footer>
</div>
</body>
</html>