TheHoTTGame should be more usable now!

This commit is contained in:
jlh 2021-07-19 19:57:29 +01:00
parent 55c0e7b8bb
commit d7fe56e8c2
16 changed files with 117 additions and 617 deletions

View File

@ -1,41 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimal-ui">
<title>Markdown preview</title>
<link rel="stylesheet" type="text/css" href="https://thomasf.github.io/solarized-css/solarized-dark.min.css">
<script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
(function($, undefined) {
var socket = new WebSocket("ws://localhost:7379");
socket.onopen = function() {
console.log("Connection established.");
socket.send("MDPM-Register-UUID: 95ef6ea9-905f-406e-ab19-bc8a950fbadb");
};
socket.onclose = function(event) {
if (event.wasClean) {
console.log('Connection closed gracefully.');
} else {
console.log('Connection terminated.');
}
console.log('Code: ' + event.code + ' reason: ' + event.reason);
};
socket.onmessage = function(event) {
$("#markdown-body").html($(event.data).find("#content").html()).trigger('mdContentChange');
var scroll = $(document).height() * ($(event.data).find("#position-percentage").html() / 100);
$("html, body").animate({ scrollTop: scroll }, 600);
};
socket.onerror = function(error) {
console.log("Error: " + error.message);
};
})(jQuery);
</script>
</head>
<body>
<article id="markdown-body" class="markdown-body">
<p>Markdown preview</p>
</article>
</body>
</html>

377
Plan.html
View File

@ -1,377 +0,0 @@
<?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>
<!-- 2021-07-19 Mon 18:31 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>&lrm;</title>
<meta name="author" content="JLH KL" />
<meta name="generator" content="Org Mode" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.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 #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
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-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 { width: 90%; }
/*]]>*/-->
</style>
<script type="text/javascript">
// @license magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a&dn=public-domain.txt Public Domain
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.classList.add("code-highlighted");
target.classList.add("code-highlighted");
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.classList.remove("code-highlighted");
target.classList.remove("code-highlighted");
}
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
<div id="content">
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgcb7a42f">Planning The HoTT Game</a>
<ul>
<li><a href="#org86f8abf">Aims of the HoTT Game</a></li>
<li><a href="#org891bd67">Barriers</a></li>
<li><a href="#org865979d">Format</a></li>
<li><a href="#org7cb3a5d">Content</a></li>
<li><a href="#org313668c">Debriefs</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-orgcb7a42f" class="outline-2">
<h2 id="orgcb7a42f">Planning The HoTT Game</h2>
<div class="outline-text-2" id="text-orgcb7a42f">
</div>
<div id="outline-container-org86f8abf" class="outline-3">
<h3 id="org86f8abf">Aims of the HoTT Game</h3>
<div class="outline-text-3" id="text-org86f8abf">
<ul class="org-ul">
<li>To get mathematicians with no experience in proof verification interested in HoTT and able to use Agda for HoTT</li>
<li>[?] Work towards showing an interesting result in HoTT</li>
<li>Try to balance hiding cubical implementations whilst exploiting their advantages</li>
</ul>
</div>
</div>
<div id="outline-container-org891bd67" class="outline-3">
<h3 id="org891bd67">Barriers</h3>
<div class="outline-text-3" id="text-org891bd67">
<ul class="org-ul">
<li>HOLD Installation of emacs</li>
<li>TODO Usage of emacs</li>
<li>TODO General type theoretic foundations</li>
<li>TODO Cubical type theory</li>
</ul>
</div>
</div>
<div id="outline-container-org865979d" class="outline-3">
<h3 id="org865979d">Format</h3>
<div class="outline-text-3" id="text-org865979d">
<ul class="org-ul">
<li>[?] Everything done in .agda files</li>
<li>Partially written code with spaces for participants to fill in + answer files</li>
<li>Levels set out with mini-bosses like in Nat Num Game, but with an overall boss</li>
<li>[?] Side quests</li>
<li>References to Harper lectures and HoTT book</li>
</ul>
</div>
</div>
<div id="outline-container-org7cb3a5d" class="outline-3">
<h3 id="org7cb3a5d">Content</h3>
<div class="outline-text-3" id="text-org7cb3a5d">
<ul class="org-ul">
<li>emacs usage</li>
<li>agda usage
<ul class="org-ul">
<li>basic commands (all covered in <a href="https://agda.readthedocs.io/en/v2.6.0.1/getting-started/quick-guide.html">https://agda.readthedocs.io/en/v2.6.0.1/getting-started/quick-guide.html</a>)</li>
<li>recommend doom emacs</li>
<li>implicit/explicit arguments</li>
<li>holes and inferred types</li>
<li><code>_+_</code> vs <code>plus__</code></li>
</ul></li>
<li>type theory basics
<ul class="org-ul">
<li>meta (judgemental/definitional) equality vs internal (propositional) equality
<ul class="org-ul">
<li>function extensionality</li>
</ul></li>
<li>type formation
<ul class="org-ul">
<li>inductive types
<ul class="org-ul">
<li>(side Q) positive and negative constructions of Pi/Sigma types</li>
<li><code>data</code> and <code>record</code></li>
</ul></li>
</ul></li>
<li>universes</li>
<li>recursors / pattern matching</li>
<li>(side Q) some natural number exercises as early evidence of being able to &rsquo;do maths&rsquo;?</li>
<li>different notions of equivalence
<ol class="org-ol">
<li>fibers contractable</li>
<li>quasi-inverse</li>
<li>zig-zag</li>
</ol></li>
<li>(side Q) types are infinity groupoids</li>
<li>extra paths (univalence, fun ext, HITs)</li>
</ul></li>
<li>HoTT
<ul class="org-ul">
<li>basics
<ol class="org-ol">
<li>meta interval, identity type vs path type
<ul class="org-ul">
<li>mention identity type for compatability with other sources, but just use path type</li>
</ul></li>
<li>path type on other types</li>
<li>dependent path type PathP vs path over</li>
<li>univalence</li>
<li>the (non)-issue of J in (Cu)TT</li>
<li>isContr, isProp, isSet</li>
<li>drawing pictures</li>
</ol></li>
<li>Structures, using univalence to transport
<ol class="org-ol">
<li>transporting results between isomorphic structures</li>
</ol></li>
<li>HITs, examples
<ol class="org-ol">
<li>the constructed interval</li>
<li>booleans and covers</li>
<li>S<sup>n</sup></li>
<li>S<sup>1</sup> with 2 cw structures equiv</li>
</ol></li>
<li>Homotopy n-types
<ol class="org-ol">
<li>homotopy levels being closed under type constructions, in particular Set and ETT inside HoTT
<ul class="org-ul">
<li>in particular sigma types</li>
</ul></li>
</ol></li>
</ul></li>
</ul>
</div>
</div>
<div id="outline-container-org313668c" class="outline-3">
<h3 id="org313668c">Debriefs</h3>
<div class="outline-text-3" id="text-org313668c">
<ul class="org-ul">
<li>2021 July 15; Homotopy n-types
<ul class="org-ul">
<li>watched (Harper) lecture 15 on Sets being closed under type formations -&gt;- motivates showing in Agda Sets closed under Sigma.</li>
<li>Harper does product case, claiming sigma case follows analogously,</li>
<li>attempt proof in Cubical Agda but highly non-obvious how to use that fibers are Sets.</li>
<li>difficulty is that PathP not in one fiber, but PathOver is, AND PathOver &lt;-&gt; PathP NON-obvious</li>
<li>Easy to generalize situation to n-types being closed under Sigma (7.1.8 in HoTT book), we showed this assuming PathPIsoPath</li>
</ul></li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: JLH KL</p>
<p class="date">Created: 2021-07-19 Mon 18:31</p>
</div>
</body>
</html>

107
Plan.md
View File

@ -1,107 +0,0 @@
# Table of Contents
- [Planning The HoTT Game](#org3bb90ed)
- [Aims of the HoTT Game](#orga8d795d)
- [Barriers](#org122a1d0)
- [Format](#org3ea389f)
- [Content](#org70d2231)
- [Debriefs](#org37fbeb9)
<a id="org3bb90ed"></a>
# Planning The HoTT Game
<a id="orga8d795d"></a>
## Aims of the HoTT Game
- To get mathematicians with no experience in proof verification interested in HoTT and able to use Agda for HoTT
- [?] Work towards showing an interesting result in HoTT
- Try to balance hiding cubical implementations whilst exploiting their advantages
<a id="org122a1d0"></a>
## Barriers
- HOLD Installation of emacs
- TODO Usage of emacs
- TODO General type theoretic foundations
- TODO Cubical type theory
<a id="org3ea389f"></a>
## Format
- [?] Everything done in .agda files
- Partially written code with spaces for participants to fill in + answer files
- Levels set out with mini-bosses like in Nat Num Game, but with an overall boss
- [?] Side quests
- References to Harper lectures and HoTT book
<a id="org70d2231"></a>
## Content
- emacs usage
- agda usage
- basic commands (all covered in <https://agda.readthedocs.io/en/v2.6.0.1/getting-started/quick-guide.html>)
- recommend doom emacs
- implicit/explicit arguments
- holes and inferred types
- `_+_` vs `plus__`
- type theory basics
- meta (judgemental/definitional) equality vs internal (propositional) equality
- function extensionality
- type formation
- inductive types
- (side Q) positive and negative constructions of Pi/Sigma types
- `data` and `record`
- universes
- recursors / pattern matching
- (side Q) some natural number exercises as early evidence of being able to &rsquo;do maths&rsquo;?
- different notions of equivalence
1. fibers contractable
2. quasi-inverse
3. zig-zag
- (side Q) types are infinity groupoids
- extra paths (univalence, fun ext, HITs)
- HoTT
- basics
1. meta interval, identity type vs path type
- mention identity type for compatability with other sources, but just use path type
2. path type on other types
3. dependent path type PathP vs path over
4. univalence
5. the (non)-issue of J in (Cu)TT
6. isContr, isProp, isSet
7. drawing pictures
- Structures, using univalence to transport
1. transporting results between isomorphic structures
- HITs, examples
1. the constructed interval
2. booleans and covers
3. S<sup>n</sup>
4. S<sup>1</sup> with 2 cw structures equiv
- Homotopy n-types
1. homotopy levels being closed under type constructions, in particular Set and ETT inside HoTT
- in particular sigma types
<a id="org37fbeb9"></a>
## Debriefs
- 2021 July 15; Homotopy n-types
- watched (Harper) lecture 15 on Sets being closed under type formations ->- motivates showing in Agda Sets closed under Sigma.
- Harper does product case, claiming sigma case follows analogously,
- attempt proof in Cubical Agda but highly non-obvious how to use that fibers are Sets.
- difficulty is that PathP not in one fiber, but PathOver is, AND PathOver <-> PathP NON-obvious
- Easy to generalize situation to n-types being closed under Sigma (7.1.8 in HoTT book), we showed this assuming PathPIsoPath

View File

@ -27,52 +27,52 @@
- emacs usage - emacs usage
- agda usage - agda usage
- basic commands (all covered in https://agda.readthedocs.io/en/v2.6.0.1/getting-started/quick-guide.html) + basic commands (all covered in https://agda.readthedocs.io/en/v2.6.0.1/getting-started/quick-guide.html)
- recommend doom emacs + recommend doom emacs
- implicit/explicit arguments + implicit/explicit arguments
- holes and inferred types + holes and inferred types
- =_+_= vs ~plus__~ + =_+_= vs =plus__=
- type theory basics - type theory basics
- meta (judgemental/definitional) equality vs internal (propositional) equality + meta (judgemental/definitional) equality vs internal (propositional) equality
- function extensionality - function extensionality
- type formation + type formation
- inductive types - inductive types
- (side Q) positive and negative constructions of Pi/Sigma types + (side Q) positive and negative constructions of Pi/Sigma types
- ~data~ and ~record~ + =data= and =record=
- universes + universes
- recursors / pattern matching + recursors / pattern matching
- (side Q) some natural number exercises as early evidence of being able to 'do maths'? + (side Q) some natural number exercises as early evidence of being able to 'do maths'?
- different notions of equivalence + different notions of equivalence
a) fibers contractable - fibers contractable
b) quasi-inverse - quasi-inverse
c) zig-zag - zig-zag
- (side Q) types are infinity groupoids + (side Q) types are infinity groupoids
- extra paths (univalence, fun ext, HITs) + extra paths (univalence, fun ext, HITs)
- HoTT - HoTT
- basics + basics
a) meta interval, identity type vs path type - meta interval, identity type vs path type
- mention identity type for compatability with other sources, but just use path type + mention identity type for compatability with other sources, but just use path type
b) path type on other types - path type on other types
c) dependent path type PathP vs path over - dependent path type PathP vs path over
d) univalence - univalence
e) the (non)-issue of J in (Cu)TT - the (non)-issue of J in (Cu)TT
f) isContr, isProp, isSet - =isContr, isProp, isSet=
g) drawing pictures - drawing pictures
- Structures, using univalence to transport + Structures, using univalence to transport
a) transporting results between isomorphic structures - transporting results between isomorphic structures
- HITs, examples + HITs, examples
a) the constructed interval - the constructed interval
b) booleans and covers - booleans and covers
c) S^n - S^n
d) S^1 with 2 cw structures equiv - S^1 with 2 cw structures equiv
- Homotopy n-types + Homotopy n-types
a) homotopy levels being closed under type constructions, in particular Set and ETT inside HoTT - homotopy levels being closed under type constructions, in particular Set and ETT inside HoTT
* in particular sigma types + in particular sigma types
** Debriefs ** Debriefs
- 2021 July 15; Homotopy n-types - 2021 July 15; Homotopy n-types
- watched (Harper) lecture 15 on Sets being closed under type formations ->- motivates showing in Agda Sets closed under Sigma. + watched (Harper) lecture 15 on Sets being closed under type formations ->- motivates showing in Agda Sets closed under Sigma.
- Harper does product case, claiming sigma case follows analogously, + Harper does product case, claiming sigma case follows analogously,
- attempt proof in Cubical Agda but highly non-obvious how to use that fibers are Sets. + attempt proof in Cubical Agda but highly non-obvious how to use that fibers are Sets.
- difficulty is that PathP not in one fiber, but PathOver is, AND PathOver <-> PathP NON-obvious + difficulty is that PathP not in one fiber, but PathOver is, AND PathOver <-> PathP NON-obvious
- Easy to generalize situation to n-types being closed under Sigma (7.1.8 in HoTT book), we showed this assuming PathPIsoPath + Easy to generalize situation to n-types being closed under Sigma (7.1.8 in HoTT book), we showed this assuming PathPIsoPath

56
README.md Normal file
View File

@ -0,0 +1,56 @@
The HoTT Game
=============
The Homotopy Type Theory (HoTT) Game is a project aimed at
introducing mathematicians with no experience
in proof verification interested in HoTT and able to use Agda for HoTT.
This guide will help you get the Game working for you.
## Installing Agda and the Cubical Agda library
Our Game is in Agda, which can be installed following instructions
[on their site](
https://agda.readthedocs.io/en/latest/getting-started/installation.html).
It is recommended that you use Agda in the text editor
[emacs](
https://www.gnu.org/software/emacs/tour/index.html),
in particular
[Doom Emacs](https://github.com/hlissner/doom-emacs) is a bit nicer if you
can't be bothered to do a bunch of configuration.
Once you have Emacs and Agda, get the [Cubical Library](
https://github.com/agda/cubical) (version 0.3)
and make sure Agda knows where your cubical library is
by following instructions on the [library management page](
https://agda.readthedocs.io/en/latest/tools/package-system.html?highlight=library%20management).
(In short: locate (or create) your `libraries` file and add a line
```
the-directory/cubical.agda-lib
```
to it, where `the-directory` is the location of `cubical.agda-lib` on your computer.)
Get the HoTT Game by [cloning this repository](
https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)
into a folder and then making sure that Agda knows where the HoTT Game is
by adding a line
```
the-directory/HoTTGameLib.agda
```
to your `libraries` file as above.
Try opening up `Trinitarianism/AsProps/Quest0.agda` in Emacs
and do `Ctrl-c Ctrl-l`.
Some text should be highlighted, and any `?` should turn into `{ }`.
## How the game works
Our Game is currently under development. Please contact the devs.
Currently you can try `Trinitarianism/AsProps/Quest0.agda`,
making use of the accompanying solutions Agda file.
## Emacs and Agda usage
We have a file with a list of basic Emacs commands and
you _should_ be able to learn how to use Agda as you go along.
## Feedback
If you have any feedback please contact the devs.

View File

@ -1,4 +1,4 @@
module TheHoTTGame.Trinitarianism.AsCats where module Trinitarianism.AsCats where
{- {-
Here are some things that we could like to have in a category Here are some things that we could like to have in a category

View File

@ -1,5 +1,5 @@
module TheHoTTGame.Trinitarianism.AsProps.Quest0 where module Trinitarianism.AsProps.Quest0 where
open import TheHoTTGame.Trinitarianism.AsProps.Quest0Preamble open import Trinitarianism.AsProps.Quest0Preamble
{- {-
Here are some things that we could like to have in a logical framework Here are some things that we could like to have in a logical framework

View File

@ -1,5 +1,5 @@
module TheHoTTGame.Trinitarianism.AsProps.Quest0Preamble where module Trinitarianism.AsProps.Quest0Preamble where
open import Cubical.Core.Everything hiding (__) public open import Cubical.Core.Everything hiding (__) public
open import Cubical.Data.Nat public open import Cubical.Data.Nat public

View File

@ -1,5 +1,5 @@
module TheHoTTGame.Trinitarianism.AsProps.Quest0Solutions where module Trinitarianism.AsProps.Quest0Solutions where
open import TheHoTTGame.Trinitarianism.AsProps.Quest0Preamble open import Trinitarianism.AsProps.Quest0Preamble
data : Prop where data : Prop where
trivial : trivial :

View File

@ -0,0 +1,13 @@
{-
Two things being equal is also a proposition
-}
-- FalseToTrue : ⊥ →
-- FalseToTrue = λ x → trivial
-- FalseToTrue' : ⊥ →
-- FalseToTrue' ()

View File

@ -1,31 +0,0 @@
{- This says that ⊥ is the proposition where there are no proofs of it. -}
{-
Given two propositions P and Q, we can form a new proposition 'P implies Q'
written P Q
To introduce a proof of P Q we assume a proof x of P and give a proof y of Q
Here is an example demonstrating in action
-}
-- TrueToTrue :
-- TrueToTrue = ?
{-
* press C-c C-l (this means Ctrl-c Ctrl-l) to load the document,
and now you can fill the holes
* press C-c C-r and agda will try to help you,
* you should see λ x { }
* navigate to the hole { } using C-c C-f (forward) or C-c C-b (backward)
* to check what agda wants in the hole use C-c C-,
* the Goal area should look like
Goal:
————————————————————————————————————————————————————————————
x :
* this means you have a proof x : and you need to give a proof of
* you can now give it a proof of and press C-c C-SPC to fill the hole
There is more than one proof (see answers) - are they the same?
-}
-- solutions:

View File

@ -1,13 +0,0 @@
{-
Two things being equal is also a proposition
-}
-- FalseToTrue : ⊥ →
-- FalseToTrue = λ x → trivial
-- FalseToTrue' : ⊥ →
-- FalseToTrue' ()

Binary file not shown.