update se212-f19 page and files
authorAmin Bandali <bandali@gnu.org>
Mon, 20 Apr 2020 04:50:48 +0000 (00:50 -0400)
committerAmin Bandali <bandali@gnu.org>
Mon, 20 Apr 2020 04:50:48 +0000 (00:50 -0400)
cv.m4
se212-f19.m4 [new file with mode: 0644]
static/se212-f19/se212-h02q04d-soln.grg [deleted file]
static/se212-f19/se212-t01.html [deleted file]
static/se212-f19/se212-t01.org [deleted file]
static/se212-f19/se212-t05.org [deleted file]
static/se212-h02q04d-soln.grg [new file with mode: 0644]
static/se212-t01.org [new file with mode: 0644]
static/se212-t05.org [new file with mode: 0644]

diff --git a/cv.m4 b/cv.m4
index 4a485f4..b90a594 100644 (file)
--- a/cv.m4
+++ b/cv.m4
@@ -49,7 +49,7 @@ Fall 2014.</p>
 
 <ul>
 <li><abbr title="Logic and Computation">SE 212</abbr>:
 
 <ul>
 <li><abbr title="Logic and Computation">SE 212</abbr>:
-<a href="se212-f19/"><abbr title="Instructional Apprentice">IA</abbr> in Fall 2019</a>,
+<a href="se212-f19"><abbr title="Instructional Apprentice">IA</abbr> in Fall 2019</a>,
 <abbr title="Teaching Assistant">TA</abbr> in Fall 2018</li>
 <li><abbr title="Software Requirements Specification and Analysis">SE 463</abbr>:
 TA in Summer 2019 and 2018</li>
 <abbr title="Teaching Assistant">TA</abbr> in Fall 2018</li>
 <li><abbr title="Software Requirements Specification and Analysis">SE 463</abbr>:
 TA in Summer 2019 and 2018</li>
diff --git a/se212-f19.m4 b/se212-f19.m4
new file mode 100644 (file)
index 0000000..d1f5385
--- /dev/null
@@ -0,0 +1,43 @@
+dnl -*- html -*-
+define(__title, `SE 212 Material')dnl
+define(__slug, `se212-f19')dnl
+include(header.html)
+<article>
+<h1>Material from SE 212 tutorials</h1>
+<p>This page contains slides and other material from
+<a href="//www.student.cs.uwaterloo.ca/~se212/times.html">SE 212
+tutorials</a> held by me in Fall 2019.  <del>If you have any
+questions, concerns, or suggestions about the presented material,
+please email me at bandali@uwaterloo.ca or come see me during my
+<a href="//www.student.cs.uwaterloo.ca/~se212/personnel.html">Friday
+office hours</a>.</del></p>
+
+<ul>
+<li>Tutorial 1:
+<ul>
+<li><a href="se212-t01-101.pdf">TUT 101 slides</a></li>
+<li><a href="se212-t01-102.pdf">TUT 102 slides</a></li>
+<li><a href="se212-t01.org">Org beamer sources</a></li>
+</ul>
+</li>
+<li>Tutorial 2:
+<ul>
+<li><a href="se212-h02q04d-soln.grg">Homework 2 q04d
+solution</a></li>
+</ul>
+</li>
+<li>Tutorial 3: —</li>
+<li>Tutorial 4: —</li>
+<li>Tutorial 5:
+<ul>
+<li><a href="se212-t05.pdf">Slides</a></li>
+<li><a href="se212-t05.org">Org beamer sources</a></li>
+</ul>
+</li>
+<li>Tutorial 6: —</li>
+<li>Tutorial 7: worked through questions 1–5 of Homework 7</li>
+<li>Tutorial 8: —</li><li>Tutorial 9: —</li>
+<li>Tutorial 10: worked through questions 1–10 of Homework 10</li>
+</ul>
+</article>
+include(footer.html)
diff --git a/static/se212-f19/se212-h02q04d-soln.grg b/static/se212-f19/se212-h02q04d-soln.grg
deleted file mode 100644 (file)
index e395717..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#u abandali
-#a h02
-
-#q q04d
-
-p <=> q, p & q <=> (p | q)
-
-#check TP
-
-p <=> q  <->  p & q <=> (p | q)
-
- 1) p & q             <=> (p | q)
- 2) (p & q   => p | q) &  (p | q => p & q)                by equiv
- 3) (!(p & q) | p | q) & (!(p | q) | p & q)               by impl * 2
- 4) (!p | !q  | p | q) & (!(p | q) | p & q)               by dm
- 5) (true | !q | q)    & (!(p | q) | p & q)               by lem
- 6) true               & (!(p | q) | p & q)               by simp1
- 7)                       !(p | q) | p & q                by simp1
- 8)                       !p & !q  | p & q                by dm
- 9)                  (!p & !q | p) & (!p & !q | q)        by distr
-10)            (!p | p) & (!q | p) & (!p | q) & (!q | q)  by distr * 2
-11)                true & (!q | p) & (!p | q) & true      by lem * 2
-12)                       (!q | p) & (!p | q)             by simp1 * 2
-13)                       (q => p) & (p => q)             by impl * 2
-14)                       p <=> q                         by equiv
diff --git a/static/se212-f19/se212-t01.html b/static/se212-f19/se212-t01.html
deleted file mode 100644 (file)
index d81cbd7..0000000
+++ /dev/null
@@ -1,343 +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>
-<!-- 2019-09-18 Wed 23:12 -->
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="viewport" content="width=device-width, initial-scale=1" />
-<title>Propositional Logic</title>
-<meta name="generator" content="Org mode" />
-<meta name="author" content="Amin Bandali" />
-<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: visible;
-    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;}
-  /* 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">
-/*
-@licstart  The following is the entire license notice for the
-JavaScript code in this tag.
-
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
-
-The JavaScript code in this tag is free software: you can
-redistribute it and/or modify it under the terms of the GNU
-General Public License (GNU GPL) as published by the Free Software
-Foundation, either version 3 of the License, or (at your option)
-any later version.  The code is distributed WITHOUT ANY WARRANTY;
-without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
-
-As additional permission under GNU GPL version 3 section 7, you
-may distribute non-source (e.g., minimized or compacted) forms of
-that code without the copy of the GNU GPL normally required by
-section 4, provided you include this license notice and a URL
-through which recipients can access the Corresponding Source.
-
-
-@licend  The above is the entire license notice
-for the JavaScript code in this tag.
-*/
-<!--/*--><![CDATA[/*><!--*/
- function CodeHighlightOn(elem, id)
- {
-   var target = document.getElementById(id);
-   if(null != target) {
-     elem.cacheClassElem = elem.className;
-     elem.cacheClassTarget = target.className;
-     target.className = "code-highlighted";
-     elem.className   = "code-highlighted";
-   }
- }
- function CodeHighlightOff(elem, id)
- {
-   var target = document.getElementById(id);
-   if(elem.cacheClassElem)
-     elem.className = elem.cacheClassElem;
-   if(elem.cacheClassTarget)
-     target.className = elem.cacheClassTarget;
- }
-/*]]>*///-->
-</script>
-</head>
-<body>
-<div id="content">
-<h1 class="title">Propositional Logic
-<br />
-<span class="subtitle">(SE 212 TUT 102)</span>
-</h1>
-
-<div id="outline-container-org3ca277c" class="outline-2">
-<h2 id="org3ca277c"><span class="section-number-2">1</span> Are you at the right place?</h2>
-<div class="outline-text-2" id="text-1">
-<p>
-We’re in MC 4040, for SE 212 TUT 102 (03:30-04:20W)
-</p>
-</div>
-</div>
-
-<div id="outline-container-orgc50c656" class="outline-2">
-<h2 id="orgc50c656"><span class="section-number-2">2</span> </h2>
-<div class="outline-text-2" id="text-2">
-<div class="org-center">
-<p>
-George
-</p>
-</div>
-</div>
-</div>
-
-<div id="outline-container-orgc4929c6" class="outline-2">
-<h2 id="orgc4929c6"><span class="section-number-2">3</span> </h2>
-<div class="outline-text-2" id="text-3">
-
-<div class="figure">
-<p><img src="./george.png" alt="george.png" />
-</p>
-</div>
-
-<p>
-<a href="https://www.student.cs.uwaterloo.ca/~se212/george/ask-george/">https://www.student.cs.uwaterloo.ca/~se212/george/ask-george/</a>
-</p>
-</div>
-</div>
-
-<div id="outline-container-org67896df" class="outline-2">
-<h2 id="org67896df"><span class="section-number-2">4</span> Tool support</h2>
-<div class="outline-text-2" id="text-4">
-<p>
-Over the years, students have developed a number of tools for using
-George and/or editing <code>.grg</code> files, such as plugins for Vim and Atom.
-</p>
-
-<p>
-Check them out at
-</p>
-
-<div class="org-center">
-<p>
-Course website → George User Manual → Contributions
-</p>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org88ee3fd" class="outline-2">
-<h2 id="org88ee3fd"><span class="section-number-2">5</span> George mode for Emacs (new!)</h2>
-<div class="outline-text-2" id="text-5">
-<ul class="org-ul">
-<li>Syntax highlighting + a number of convenience functions</li>
-<li>Grab it from <a href="https://git.sr.ht/~bandali/george-mode">https://git.sr.ht/~bandali/george-mode</a> <br />
-(soon on Contributions page)</li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-org0ba02d1" class="outline-2">
-<h2 id="org0ba02d1"><span class="section-number-2">6</span> <code>a00q01.grg</code> (demo)</h2>
-<div class="outline-text-2" id="text-6">
-<p>
-Walk through answering <code>a00q01.grg</code> and submitting on MarkUs
-</p>
-</div>
-</div>
-
-<div id="outline-container-orgb863070" class="outline-2">
-<h2 id="orgb863070"><span class="section-number-2">7</span> Homework 1</h2>
-<div class="outline-text-2" id="text-7">
-<ul class="org-ul">
-<li>Let’s do a couple of questions from Homework 1</li>
-<li>Now you try the rest, let me know if you have any questions</li>
-</ul>
-</div>
-</div>
-</div>
-<div id="postamble" class="status">
-<p class="date">Date: Wed Sep 11, 2019</p>
-<p class="author">Author: Amin Bandali</p>
-<p class="email">Email: <a href="mailto:bandali@uwaterloo.ca">bandali@uwaterloo.ca</a></p>
-<p class="date">Created: 2019-09-18 Wed 23:12</p>
-<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
-</div>
-</body>
-</html>
diff --git a/static/se212-f19/se212-t01.org b/static/se212-f19/se212-t01.org
deleted file mode 100644 (file)
index 12e9cdd..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#+macro: topic Propositional Logic
-
-#+macro: room MC 4040
-#+macro: sec1 SE 212 TUT 101
-#+macro: sec2 SE 212 TUT 102
-#+macro: time1 02:30-03:20W
-#+macro: time2 03:30-04:20W
-
-#+macro: sec {{{sec2}}}
-#+macro: sectime {{{time2}}}
-
-#+title:    {{{topic}}}
-#+subtitle: ({{{sec}}})
-#+author:   Amin Bandali
-#+email:    bandali@uwaterloo.ca
-#+date:     Wed Sep 11, 2019
-#+language: en
-#+options:  email:t num:t toc:nil \n:nil ::t |:t ^:t -:t f:t *:t <:t
-#+options:  tex:t  d:nil todo:t pri:nil tags:not-in-toc
-#+select_tags: export
-#+exclude_tags: noexport
-#+startup: beamer
-#+latex_class: beamer
-# #+latex_class_options: [bigger]
-#+latex_header: \setbeamercovered{transparent}
-#+latex: \setbeamertemplate{itemize items}[circle]
-#+beamer_color_theme: beaver
-
-* Are you at the right place?
-
-We’re in {{{room}}}, for {{{sec}}} ({{{sectime}}})
-
-* 
-
-#+latex: \definecolor{darkred}{rgb}{0.8,0,0}
-#+latex: {\Large \color{darkred}
-#+begin_center
-George
-#+end_center
-#+latex: }
-
-* 
-
-#+latex: \vspace{-2.5em}
-file:./george.png
-
-#+latex: {\footnotesize
-https://www.student.cs.uwaterloo.ca/~se212/george/ask-george/
-#+latex: }
-
-* Tool support
-
-Over the years, students have developed a number of tools for using
-George and/or editing =.grg= files, such as plugins for Vim and Atom.
-
-Check them out at
-
-#+begin_center
-Course website → George User Manual → Contributions
-#+end_center
-
-* George mode for Emacs (new!)
-
-- Syntax highlighting + a number of convenience functions
-- Grab it from https://git.sr.ht/~bandali/george-mode \\
-  (soon on Contributions page)
-
-* =a00q01.grg= (demo)
-
-Walk through answering =a00q01.grg= and submitting on MarkUs
-
-* Homework 1
-:PROPERTIES:
-:BEAMER_act: [<+->]
-:END:
-
-- Let’s do a couple of questions from Homework 1
-- Now you try the rest, let me know if you have any questions
diff --git a/static/se212-f19/se212-t05.org b/static/se212-f19/se212-t05.org
deleted file mode 100644 (file)
index a85896d..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-#+title:    Predicate Logic
-#+subtitle: (SE 212 Tutorial 5)
-#+author:   Amin Bandali
-#+email:    bandali@uwaterloo.ca
-#+date:     Wed Oct 9, 2019
-#+language: en
-#+options:  email:t num:t toc:nil \n:nil ::t |:t ^:t -:t f:t *:t <:t
-#+options:  tex:t  d:nil todo:t pri:nil tags:not-in-toc
-#+select_tags: export
-#+exclude_tags: noexport
-#+startup: beamer
-#+latex_class: beamer
-# #+latex_class_options: [bigger]
-#+latex_header: \setbeamercovered{transparent}
-#+latex: \setbeamertemplate{itemize items}[circle]
-#+beamer_color_theme: beaver
-
-* Today’s plan
-:PROPERTIES:
-:BEAMER_act: [<+->]
-:END:
-
-- do some semantics questions from homework 4
-- do some ND questions from homework 5
-
-* =h04q05=
-
-Provide a counterexample to show that the following argument is not
-valid and demonstrate that your answer is correct.
-
-#+begin_example
-forall y : M . exists x : N . p(g(x), y)
-|=
-exists z : M . p(z, z)
-#+end_example
-
-* =h04q05= \small{(cont’d)}
-
-#+begin_example
-Domain:
-    M = {m1, m2}
-    N = {n1, n2}
-
-Mapping:
-    Syntax  | Meaning
-    --------------------------
-      g(.)  |  G(n1) := m1
-            |  G(n2) := m2
-    --------------------------
-    p(., .) | P(m1, m1) := F
-            | P(m1, m2) := T
-            | P(m2, m1) := T
-            | P(m2, m2) := F
-#+end_example
-
-* =h04q05= \small{(cont’d)}
-
-#+begin_example
-Premise:
-      [forall y : M . exists x : N . p(g(x), y)]
-    = [exists x: N. p(g(x), ^m1)] AND
-      [exists x: N . p(g(x), ^m2)]
-    = (P(G(n1), m1) OR P(G(n2), m1)) AND
-      (P(G(n1), m2) OR P(G(n2), m2))
-    = (P(m1, m1) OR P(m2, m1)) AND
-      (P(m1, m2) OR P(m2, m2))
-    = (F OR T) AND (T OR F)
-    = T
-#+end_example
-
-* =h04q05= \small{(cont’d)}
-
-#+begin_example
-Conclusion:
-      [exists z: M . p(z, z)]
-    = P(m1, m1) OR P(m2, m2)
-    = F OR F
-    = F
-#+end_example
-
-* =h04q06=
-
-Express the following sentences in predicate logic. Use types in your
-formalization.  Is the set of formulas consistent?  Demonstrate that
-your answer is correct using the semantics of predicate logic.
-
-#+begin_example
-All programmer like some computers.
-Some programmers use MAC.
-Therefore, some people who like some computers use MAC.
-#+end_example
-
-* =h04q06= \small{(cont’d)}
-
-All programmer like some computers.\\
-Some programmers use MAC.\\
-Therefore, some people who like some computers use MAC.
-
-#+begin_example
-Formalization:
-    programmer(x) means x is a programmer
-    usesmac(x) means x uses MAC
-    likes(x, y) means x likes y
-
-forall x: Person . programmer(x) =>
-           exists y: Computer . likes(x, y),
-exists x: Person . programmer(x) & usesmac(x)
-|-
-exists x: Person .
-  (exists y: Computer . likes(x, y) & usesmac(x))
-#+end_example
-
-* =h04q06= \small{(cont’d)}
-
-These sentences are /consistent/.  Here is an interpretation in which
-all the formulas are T:
-
-#+begin_example
-Domain:
-    People = {John}
-    Computer = {MacPro}
-
-Mapping:
-    Syntax          | Meaning
-    -------------------------------------------
-    programmer(.)   | programmer(John) = T
-    likes(.,.)      | likes(John, MacPro) = T
-    usesmac(.)      | usesmac(John) = T
-#+end_example
-
-* =h04q06= \small{(cont’d)}
-
-#+begin_example
-formula 1:
-      [forall x: Person . programmer(x) =>
-       exists y: Computer . likes(x, y)]
-    = [programmer(^John) =>
-       exists y: Computer . likes(^John, y)]]
-    = programmer(John) IMP likes(John, MacPro)
-    = T IMP T
-    = T
-
-formula 2:
-      [exists x: Person . programmer(x) & usesmac(x)]
-    = programmer(John) AND usesmac(John)
-    = T AND T
-    = T
-#+end_example
-
-* =h04q06= \small{(cont’d)}
-
-#+begin_example
-formula 3:
-      [exists x: Person . (exists y: Computer .
-       likes(x, y) & usesmac(x))]
-    = [exists y: Computer .
-       likes(^John, y) & usesmac(^John)]
-    = likes(John, MacPro) AND usesmac(John)
-    = T AND T
-    = T
-#+end_example
-
-* =h05q01a=
-
-If the following arguments are valid, use natural deduction AND
-semantic tableaux to prove them; otherwise, provide a counterexample.
-
-#+begin_example
-forall x . s(x) | t(x),
-forall x . s(x) => t(x) & k(c, x),
-forall x . t(x) => m(x)
-|-
-m(c)
-where c is a constant
-#+end_example
-
-* =h05q01a= \small{(cont’d)}
-
-#+begin_example
-#check ND
-forall x . s(x) | t(x),
-forall x . s(x) => t(x) & k(c, x),
-forall x . t(x) => m(x)
-|-
-m(c)
-#+end_example
-
-* =h05q01a= \small{(cont’d)}
-
-#+begin_example
-1) forall x . s(x) | t(x) premise
-2) forall x . s(x) => t(x) & k(c, x) premise
-3) forall x . t(x) => m(x) premise
-4) s(c) | t(c) by forall_e on 1
-5) s(c) => t(c) & k(c, c) by forall_e on 2
-6) t(c) => m(c) by forall_e on 3
-7) case s(c) {
-    8) t(c) & k(c, c) by imp_e on 5, 7
-    9) t(c) by and_e on 8
-    10) m(c) by imp_e on 6, 9
-}
-11) case t(c) {
-    12) m(c) by imp_e on 6, 11
-}
-13) m(c) by cases on 4, 7-10, 11-12
-#+end_example
-
-* =h05q01b=
-
-Is this formula a tautology?
-
-#+begin_example
-|- (exists x . p(x)) => forall y . p(y)
-#+end_example
-
-* =h05q01b= \small{(cont’d)}
-
-No, this formula is not a tautology.  Interpretation:
-
-#+begin_example
-1) Domain = {a, b}
-
-2) Mapping:
-    Syntax  | Meaning
-    ----------------------
-    p(.)    | P(a) = T
-            | P(b) = F
-
-Conclusion:
-  [(exists x. p(x)) => forall y. p(y)]
-= (P(a) OR P(b)) IMP (P(a) AND P(b))
-= (T OR F) IMP (T AND F)
-= T IMP F
-= F
-#+end_example
-
-* =h05q01d=
-
-Is this argument valid?
-
-#+begin_example
-forall x . p(x) | q(x),
-forall x . !p(x)
-|-
-forall x . q(x)
-#+end_example
-
-* =h05q01d= \small{(cont’d)}
-
-#+begin_example
-#check ND
-
-forall x . p(x) | q(x), forall x . !p(x) |- forall x . q(x)
-
-1) forall x . p(x) | q(x) premise
-2) forall x . !p(x) premise
-3) for every xg {
-    4) p(xg) | q(xg) by forall_e on 1
-    5) case p(xg) {
-        6) !p(xg) by forall_e on 2
-        7) q(xg) by not_e on 5, 6
-    }
-    8) case q(xg) {}
-    9) q(xg) by cases on 4, 5-7, 8-8
-}
-10) forall x. q(x) by forall_i on 3-9
-#+end_example
-
-* Announcements
-
-- no tutorial next week (Oct 16) (reading week)
-- no tutorial the week after (Oct 23) (midterm marking)
diff --git a/static/se212-h02q04d-soln.grg b/static/se212-h02q04d-soln.grg
new file mode 100644 (file)
index 0000000..e395717
--- /dev/null
@@ -0,0 +1,25 @@
+#u abandali
+#a h02
+
+#q q04d
+
+p <=> q, p & q <=> (p | q)
+
+#check TP
+
+p <=> q  <->  p & q <=> (p | q)
+
+ 1) p & q             <=> (p | q)
+ 2) (p & q   => p | q) &  (p | q => p & q)                by equiv
+ 3) (!(p & q) | p | q) & (!(p | q) | p & q)               by impl * 2
+ 4) (!p | !q  | p | q) & (!(p | q) | p & q)               by dm
+ 5) (true | !q | q)    & (!(p | q) | p & q)               by lem
+ 6) true               & (!(p | q) | p & q)               by simp1
+ 7)                       !(p | q) | p & q                by simp1
+ 8)                       !p & !q  | p & q                by dm
+ 9)                  (!p & !q | p) & (!p & !q | q)        by distr
+10)            (!p | p) & (!q | p) & (!p | q) & (!q | q)  by distr * 2
+11)                true & (!q | p) & (!p | q) & true      by lem * 2
+12)                       (!q | p) & (!p | q)             by simp1 * 2
+13)                       (q => p) & (p => q)             by impl * 2
+14)                       p <=> q                         by equiv
diff --git a/static/se212-t01.org b/static/se212-t01.org
new file mode 100644 (file)
index 0000000..12e9cdd
--- /dev/null
@@ -0,0 +1,78 @@
+#+macro: topic Propositional Logic
+
+#+macro: room MC 4040
+#+macro: sec1 SE 212 TUT 101
+#+macro: sec2 SE 212 TUT 102
+#+macro: time1 02:30-03:20W
+#+macro: time2 03:30-04:20W
+
+#+macro: sec {{{sec2}}}
+#+macro: sectime {{{time2}}}
+
+#+title:    {{{topic}}}
+#+subtitle: ({{{sec}}})
+#+author:   Amin Bandali
+#+email:    bandali@uwaterloo.ca
+#+date:     Wed Sep 11, 2019
+#+language: en
+#+options:  email:t num:t toc:nil \n:nil ::t |:t ^:t -:t f:t *:t <:t
+#+options:  tex:t  d:nil todo:t pri:nil tags:not-in-toc
+#+select_tags: export
+#+exclude_tags: noexport
+#+startup: beamer
+#+latex_class: beamer
+# #+latex_class_options: [bigger]
+#+latex_header: \setbeamercovered{transparent}
+#+latex: \setbeamertemplate{itemize items}[circle]
+#+beamer_color_theme: beaver
+
+* Are you at the right place?
+
+We’re in {{{room}}}, for {{{sec}}} ({{{sectime}}})
+
+* 
+
+#+latex: \definecolor{darkred}{rgb}{0.8,0,0}
+#+latex: {\Large \color{darkred}
+#+begin_center
+George
+#+end_center
+#+latex: }
+
+* 
+
+#+latex: \vspace{-2.5em}
+file:./george.png
+
+#+latex: {\footnotesize
+https://www.student.cs.uwaterloo.ca/~se212/george/ask-george/
+#+latex: }
+
+* Tool support
+
+Over the years, students have developed a number of tools for using
+George and/or editing =.grg= files, such as plugins for Vim and Atom.
+
+Check them out at
+
+#+begin_center
+Course website → George User Manual → Contributions
+#+end_center
+
+* George mode for Emacs (new!)
+
+- Syntax highlighting + a number of convenience functions
+- Grab it from https://git.sr.ht/~bandali/george-mode \\
+  (soon on Contributions page)
+
+* =a00q01.grg= (demo)
+
+Walk through answering =a00q01.grg= and submitting on MarkUs
+
+* Homework 1
+:PROPERTIES:
+:BEAMER_act: [<+->]
+:END:
+
+- Let’s do a couple of questions from Homework 1
+- Now you try the rest, let me know if you have any questions
diff --git a/static/se212-t05.org b/static/se212-t05.org
new file mode 100644 (file)
index 0000000..a85896d
--- /dev/null
@@ -0,0 +1,272 @@
+#+title:    Predicate Logic
+#+subtitle: (SE 212 Tutorial 5)
+#+author:   Amin Bandali
+#+email:    bandali@uwaterloo.ca
+#+date:     Wed Oct 9, 2019
+#+language: en
+#+options:  email:t num:t toc:nil \n:nil ::t |:t ^:t -:t f:t *:t <:t
+#+options:  tex:t  d:nil todo:t pri:nil tags:not-in-toc
+#+select_tags: export
+#+exclude_tags: noexport
+#+startup: beamer
+#+latex_class: beamer
+# #+latex_class_options: [bigger]
+#+latex_header: \setbeamercovered{transparent}
+#+latex: \setbeamertemplate{itemize items}[circle]
+#+beamer_color_theme: beaver
+
+* Today’s plan
+:PROPERTIES:
+:BEAMER_act: [<+->]
+:END:
+
+- do some semantics questions from homework 4
+- do some ND questions from homework 5
+
+* =h04q05=
+
+Provide a counterexample to show that the following argument is not
+valid and demonstrate that your answer is correct.
+
+#+begin_example
+forall y : M . exists x : N . p(g(x), y)
+|=
+exists z : M . p(z, z)
+#+end_example
+
+* =h04q05= \small{(cont’d)}
+
+#+begin_example
+Domain:
+    M = {m1, m2}
+    N = {n1, n2}
+
+Mapping:
+    Syntax  | Meaning
+    --------------------------
+      g(.)  |  G(n1) := m1
+            |  G(n2) := m2
+    --------------------------
+    p(., .) | P(m1, m1) := F
+            | P(m1, m2) := T
+            | P(m2, m1) := T
+            | P(m2, m2) := F
+#+end_example
+
+* =h04q05= \small{(cont’d)}
+
+#+begin_example
+Premise:
+      [forall y : M . exists x : N . p(g(x), y)]
+    = [exists x: N. p(g(x), ^m1)] AND
+      [exists x: N . p(g(x), ^m2)]
+    = (P(G(n1), m1) OR P(G(n2), m1)) AND
+      (P(G(n1), m2) OR P(G(n2), m2))
+    = (P(m1, m1) OR P(m2, m1)) AND
+      (P(m1, m2) OR P(m2, m2))
+    = (F OR T) AND (T OR F)
+    = T
+#+end_example
+
+* =h04q05= \small{(cont’d)}
+
+#+begin_example
+Conclusion:
+      [exists z: M . p(z, z)]
+    = P(m1, m1) OR P(m2, m2)
+    = F OR F
+    = F
+#+end_example
+
+* =h04q06=
+
+Express the following sentences in predicate logic. Use types in your
+formalization.  Is the set of formulas consistent?  Demonstrate that
+your answer is correct using the semantics of predicate logic.
+
+#+begin_example
+All programmer like some computers.
+Some programmers use MAC.
+Therefore, some people who like some computers use MAC.
+#+end_example
+
+* =h04q06= \small{(cont’d)}
+
+All programmer like some computers.\\
+Some programmers use MAC.\\
+Therefore, some people who like some computers use MAC.
+
+#+begin_example
+Formalization:
+    programmer(x) means x is a programmer
+    usesmac(x) means x uses MAC
+    likes(x, y) means x likes y
+
+forall x: Person . programmer(x) =>
+           exists y: Computer . likes(x, y),
+exists x: Person . programmer(x) & usesmac(x)
+|-
+exists x: Person .
+  (exists y: Computer . likes(x, y) & usesmac(x))
+#+end_example
+
+* =h04q06= \small{(cont’d)}
+
+These sentences are /consistent/.  Here is an interpretation in which
+all the formulas are T:
+
+#+begin_example
+Domain:
+    People = {John}
+    Computer = {MacPro}
+
+Mapping:
+    Syntax          | Meaning
+    -------------------------------------------
+    programmer(.)   | programmer(John) = T
+    likes(.,.)      | likes(John, MacPro) = T
+    usesmac(.)      | usesmac(John) = T
+#+end_example
+
+* =h04q06= \small{(cont’d)}
+
+#+begin_example
+formula 1:
+      [forall x: Person . programmer(x) =>
+       exists y: Computer . likes(x, y)]
+    = [programmer(^John) =>
+       exists y: Computer . likes(^John, y)]]
+    = programmer(John) IMP likes(John, MacPro)
+    = T IMP T
+    = T
+
+formula 2:
+      [exists x: Person . programmer(x) & usesmac(x)]
+    = programmer(John) AND usesmac(John)
+    = T AND T
+    = T
+#+end_example
+
+* =h04q06= \small{(cont’d)}
+
+#+begin_example
+formula 3:
+      [exists x: Person . (exists y: Computer .
+       likes(x, y) & usesmac(x))]
+    = [exists y: Computer .
+       likes(^John, y) & usesmac(^John)]
+    = likes(John, MacPro) AND usesmac(John)
+    = T AND T
+    = T
+#+end_example
+
+* =h05q01a=
+
+If the following arguments are valid, use natural deduction AND
+semantic tableaux to prove them; otherwise, provide a counterexample.
+
+#+begin_example
+forall x . s(x) | t(x),
+forall x . s(x) => t(x) & k(c, x),
+forall x . t(x) => m(x)
+|-
+m(c)
+where c is a constant
+#+end_example
+
+* =h05q01a= \small{(cont’d)}
+
+#+begin_example
+#check ND
+forall x . s(x) | t(x),
+forall x . s(x) => t(x) & k(c, x),
+forall x . t(x) => m(x)
+|-
+m(c)
+#+end_example
+
+* =h05q01a= \small{(cont’d)}
+
+#+begin_example
+1) forall x . s(x) | t(x) premise
+2) forall x . s(x) => t(x) & k(c, x) premise
+3) forall x . t(x) => m(x) premise
+4) s(c) | t(c) by forall_e on 1
+5) s(c) => t(c) & k(c, c) by forall_e on 2
+6) t(c) => m(c) by forall_e on 3
+7) case s(c) {
+    8) t(c) & k(c, c) by imp_e on 5, 7
+    9) t(c) by and_e on 8
+    10) m(c) by imp_e on 6, 9
+}
+11) case t(c) {
+    12) m(c) by imp_e on 6, 11
+}
+13) m(c) by cases on 4, 7-10, 11-12
+#+end_example
+
+* =h05q01b=
+
+Is this formula a tautology?
+
+#+begin_example
+|- (exists x . p(x)) => forall y . p(y)
+#+end_example
+
+* =h05q01b= \small{(cont’d)}
+
+No, this formula is not a tautology.  Interpretation:
+
+#+begin_example
+1) Domain = {a, b}
+
+2) Mapping:
+    Syntax  | Meaning
+    ----------------------
+    p(.)    | P(a) = T
+            | P(b) = F
+
+Conclusion:
+  [(exists x. p(x)) => forall y. p(y)]
+= (P(a) OR P(b)) IMP (P(a) AND P(b))
+= (T OR F) IMP (T AND F)
+= T IMP F
+= F
+#+end_example
+
+* =h05q01d=
+
+Is this argument valid?
+
+#+begin_example
+forall x . p(x) | q(x),
+forall x . !p(x)
+|-
+forall x . q(x)
+#+end_example
+
+* =h05q01d= \small{(cont’d)}
+
+#+begin_example
+#check ND
+
+forall x . p(x) | q(x), forall x . !p(x) |- forall x . q(x)
+
+1) forall x . p(x) | q(x) premise
+2) forall x . !p(x) premise
+3) for every xg {
+    4) p(xg) | q(xg) by forall_e on 1
+    5) case p(xg) {
+        6) !p(xg) by forall_e on 2
+        7) q(xg) by not_e on 5, 6
+    }
+    8) case q(xg) {}
+    9) q(xg) by cases on 4, 5-7, 8-8
+}
+10) forall x. q(x) by forall_i on 3-9
+#+end_example
+
+* Announcements
+
+- no tutorial next week (Oct 16) (reading week)
+- no tutorial the week after (Oct 23) (midterm marking)