hw subm draft
authorlammich <lammich@in.tum.de>
Wed, 13 Jun 2018 11:16:59 +0200
changeset 69927 5e12c16e13ca
parent 69926 97938119fce9
child 69928 593b4b49b0cb
hw subm
SS18/Exercises/ROOT
SS18/Exercises/ex09.pdf
SS18/Exercises/ex09/Balance.thy
SS18/Exercises/ex09/RBT_exercises.thy
SS18/Exercises/ex09/T23_ex.thy
SS18/Exercises/ex09/document/build
SS18/Exercises/ex09/document/exercise.sty
SS18/Exercises/ex09/document/root.tex
SS18/Exercises/ex09/ex09.thy
SS18/Exercises/ex09/ex09_2.thy
SS18/Exercises/ex09/ex09_2tmpl.thy
SS18/Exercises/ex09/ex09tmpl.thy
SS18/Exercises/ex09/hw09.thy
SS18/Exercises/ex09/hw09tmpl.thy
SS18/Exercises/ex10.pdf
SS18/Exercises/ex10/Trie1.thy
SS18/Exercises/ex10/Trie_Enum.thy
SS18/Exercises/ex10/document/build
SS18/Exercises/ex10/document/exercise.sty
SS18/Exercises/ex10/document/root.tex
SS18/Exercises/ex10/ex10.thy
SS18/Exercises/ex10/ex10_2.thy
SS18/Exercises/ex10/hw10_1.thy
SS18/Exercises/ex10/hw10_2.thy
SS18/Exercises/hwsubm/email.log
SS18/Exercises/hwsubm/hw01/extracted/a.kutafina@tum.de
SS18/Exercises/hwsubm/hw01/extracted/a.putwattana@tum.de
SS18/Exercises/hwsubm/hw01/extracted/alexejrotar@gmail.com
SS18/Exercises/hwsubm/hw01/extracted/daniel.kutasi@outlook.de
SS18/Exercises/hwsubm/hw01/extracted/eric.koepke@online.de
SS18/Exercises/hwsubm/hw01/extracted/felix.wielander@tum.de
SS18/Exercises/hwsubm/hw01/extracted/florian.stamer@tum.de
SS18/Exercises/hwsubm/hw01/extracted/g.bidlingmaier@tum.de
SS18/Exercises/hwsubm/hw01/extracted/ga53qud@mytum.de
SS18/Exercises/hwsubm/hw01/extracted/ge69kel@mytum.de
SS18/Exercises/hwsubm/hw01/extracted/ge72lic@mytum.de
SS18/Exercises/hwsubm/hw01/extracted/j.gottfriedsen@tum.de
SS18/Exercises/hwsubm/hw01/extracted/j.v.mutius@gmail.com
SS18/Exercises/hwsubm/hw01/extracted/jonatan.juhas@tum.de
SS18/Exercises/hwsubm/hw01/extracted/katharinaluise.schmitt@tum.de
SS18/Exercises/hwsubm/hw01/extracted/m.kirchmeier@tum.de
SS18/Exercises/hwsubm/hw01/extracted/markuswebel@gmail.com
SS18/Exercises/hwsubm/hw01/extracted/martin.rau@tum.de
SS18/Exercises/hwsubm/hw01/extracted/mitja.krebs@tum.de
SS18/Exercises/hwsubm/hw01/extracted/odnoshivkin@me.com
SS18/Exercises/hwsubm/hw01/extracted/omar.badramany@tum.de
SS18/Exercises/hwsubm/hw01/extracted/s.griebel@tum.de
SS18/Exercises/hwsubm/hw01/extracted/sabine.rieder@tum.de
SS18/Exercises/hwsubm/hw01/extracted/smith.nickh@gmail.com
SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/SENTMAIL
SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/hw07.thy
SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/SENTMAIL
SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/homework07.thy
SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/SENTMAIL
SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/homework07.thy
SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_469/SENTMAIL
SS18/Exercises/hwsubm/hw07/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_469/jonischkeit07.thy
SS18/Exercises/hwsubm/hw07/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_469/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Kirchmeier_Maximilian_max.kirchmeier@tum.de_445/SENTMAIL
SS18/Exercises/hwsubm/hw07/Kirchmeier_Maximilian_max.kirchmeier@tum.de_445/tmpl07.thy
SS18/Exercises/hwsubm/hw07/Kirchmeier_Maximilian_max.kirchmeier@tum.de_445/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Koepke_Eric_eric.koepke@tum.de_462/SENTMAIL
SS18/Exercises/hwsubm/hw07/Koepke_Eric_eric.koepke@tum.de_462/ex07.thy
SS18/Exercises/hwsubm/hw07/Koepke_Eric_eric.koepke@tum.de_462/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Krebs_Mitja_mitja.krebs@tum.de_464/SENTMAIL
SS18/Exercises/hwsubm/hw07/Krebs_Mitja_mitja.krebs@tum.de_464/tmpl07.thy
SS18/Exercises/hwsubm/hw07/Krebs_Mitja_mitja.krebs@tum.de_464/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Kutasi_Daniel_daniel.kutasi@mytum.de_460/SENTMAIL
SS18/Exercises/hwsubm/hw07/Kutasi_Daniel_daniel.kutasi@mytum.de_460/hw07.thy
SS18/Exercises/hwsubm/hw07/Kutasi_Daniel_daniel.kutasi@mytum.de_460/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Mutius_Joshua_ga96koz@mytum.de_465/SENTMAIL
SS18/Exercises/hwsubm/hw07/Mutius_Joshua_ga96koz@mytum.de_465/hw07.thy
SS18/Exercises/hwsubm/hw07/Mutius_Joshua_ga96koz@mytum.de_465/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Pfeiffer_Marcus_ge72lic@mytum.de_450/SENTMAIL
SS18/Exercises/hwsubm/hw07/Pfeiffer_Marcus_ge72lic@mytum.de_450/ex07.thy
SS18/Exercises/hwsubm/hw07/Pfeiffer_Marcus_ge72lic@mytum.de_450/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Putwattana_Attakorn_a.putwattana@tum.de_463/SENTMAIL
SS18/Exercises/hwsubm/hw07/Putwattana_Attakorn_a.putwattana@tum.de_463/hw07.thy
SS18/Exercises/hwsubm/hw07/Putwattana_Attakorn_a.putwattana@tum.de_463/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Rau_Martin_martin.rau@tum.de_451/Home07.thy
SS18/Exercises/hwsubm/hw07/Rau_Martin_martin.rau@tum.de_451/SENTMAIL
SS18/Exercises/hwsubm/hw07/Rau_Martin_martin.rau@tum.de_451/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Rieder_Sabine_sabine.rieder@tum.de_444/SENTMAIL
SS18/Exercises/hwsubm/hw07/Rieder_Sabine_sabine.rieder@tum.de_444/tmpl07.thy
SS18/Exercises/hwsubm/hw07/Rieder_Sabine_sabine.rieder@tum.de_444/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Rotar_Alexej_ga59zew@mytum.de_449/SENTMAIL
SS18/Exercises/hwsubm/hw07/Rotar_Alexej_ga59zew@mytum.de_449/hw07.thy
SS18/Exercises/hwsubm/hw07/Rotar_Alexej_ga59zew@mytum.de_449/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Schmitt_Katharina_katharinaluise.schmitt@tum.de_466/SENTMAIL
SS18/Exercises/hwsubm/hw07/Schmitt_Katharina_katharinaluise.schmitt@tum.de_466/ex07_v2.thy
SS18/Exercises/hwsubm/hw07/Schmitt_Katharina_katharinaluise.schmitt@tum.de_466/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Smith_Nicholas_nick.smith@tum.de_468/HW07.thy
SS18/Exercises/hwsubm/hw07/Smith_Nicholas_nick.smith@tum.de_468/SENTMAIL
SS18/Exercises/hwsubm/hw07/Smith_Nicholas_nick.smith@tum.de_468/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Somasundaram_Arun_ge69kel@mytum.de_458/Homework07.thy
SS18/Exercises/hwsubm/hw07/Somasundaram_Arun_ge69kel@mytum.de_458/SENTMAIL
SS18/Exercises/hwsubm/hw07/Somasundaram_Arun_ge69kel@mytum.de_458/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Stamer_Florian_florian.stamer@tum.de_452/SENTMAIL
SS18/Exercises/hwsubm/hw07/Stamer_Florian_florian.stamer@tum.de_452/ex07.thy
SS18/Exercises/hwsubm/hw07/Stamer_Florian_florian.stamer@tum.de_452/user_error_log.txt
SS18/Exercises/hwsubm/hw07/Wielander_Felix_felix.wielander@tum.de_467/SENTMAIL
SS18/Exercises/hwsubm/hw07/Wielander_Felix_felix.wielander@tum.de_467/tmpl07.thy
SS18/Exercises/hwsubm/hw07/Wielander_Felix_felix.wielander@tum.de_467/user_error_log.txt
SS18/Exercises/hwsubm/hw07/meta.csv
SS18/Exercises/hwsubm/hw08/Das_Sharma_Amartya_ga53qud@mytum.de_485/SENTMAIL
SS18/Exercises/hwsubm/hw08/Das_Sharma_Amartya_ga53qud@mytum.de_485/hw08.thy
SS18/Exercises/hwsubm/hw08/Das_Sharma_Amartya_ga53qud@mytum.de_485/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_488/SENTMAIL
SS18/Exercises/hwsubm/hw08/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_488/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_488/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Griebel_Simon_s.griebel@tum.de_493/SENTMAIL
SS18/Exercises/hwsubm/hw08/Griebel_Simon_s.griebel@tum.de_493/homework08.thy
SS18/Exercises/hwsubm/hw08/Griebel_Simon_s.griebel@tum.de_493/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_490/SENTMAIL
SS18/Exercises/hwsubm/hw08/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_490/jonischkeit08.thy
SS18/Exercises/hwsubm/hw08/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_490/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Koepke_Eric_eric.koepke@tum.de_491/SENTMAIL
SS18/Exercises/hwsubm/hw08/Koepke_Eric_eric.koepke@tum.de_491/hw08.thy
SS18/Exercises/hwsubm/hw08/Koepke_Eric_eric.koepke@tum.de_491/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Krebs_Mitja_mitja.krebs@tum.de_484/SENTMAIL
SS18/Exercises/hwsubm/hw08/Krebs_Mitja_mitja.krebs@tum.de_484/ex08tmpl.thy
SS18/Exercises/hwsubm/hw08/Krebs_Mitja_mitja.krebs@tum.de_484/hw08bonustmpl.thy
SS18/Exercises/hwsubm/hw08/Krebs_Mitja_mitja.krebs@tum.de_484/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Krebs_Mitja_mitja.krebs@tum.de_484/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Kutasi_Daniel_daniel.kutasi@mytum.de_475/SENTMAIL
SS18/Exercises/hwsubm/hw08/Kutasi_Daniel_daniel.kutasi@mytum.de_475/hw08.thy
SS18/Exercises/hwsubm/hw08/Kutasi_Daniel_daniel.kutasi@mytum.de_475/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Mutius_Joshua_ga96koz@mytum.de_494/SENTMAIL
SS18/Exercises/hwsubm/hw08/Mutius_Joshua_ga96koz@mytum.de_494/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Mutius_Joshua_ga96koz@mytum.de_494/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Pfeiffer_Marcus_ge72lic@mytum.de_481/SENTMAIL
SS18/Exercises/hwsubm/hw08/Pfeiffer_Marcus_ge72lic@mytum.de_481/ex08.thy
SS18/Exercises/hwsubm/hw08/Pfeiffer_Marcus_ge72lic@mytum.de_481/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Putwattana_Attakorn_a.putwattana@tum.de_473/SENTMAIL
SS18/Exercises/hwsubm/hw08/Putwattana_Attakorn_a.putwattana@tum.de_473/hw08.thy
SS18/Exercises/hwsubm/hw08/Putwattana_Attakorn_a.putwattana@tum.de_473/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Rau_Martin_martin.rau@tum.de_472/Home08.thy
SS18/Exercises/hwsubm/hw08/Rau_Martin_martin.rau@tum.de_472/SENTMAIL
SS18/Exercises/hwsubm/hw08/Rau_Martin_martin.rau@tum.de_472/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Rieder_Sabine_sabine.rieder@tum.de_471/SENTMAIL
SS18/Exercises/hwsubm/hw08/Rieder_Sabine_sabine.rieder@tum.de_471/ex08tmpl.thy
SS18/Exercises/hwsubm/hw08/Rieder_Sabine_sabine.rieder@tum.de_471/hw08bonustmpl.thy
SS18/Exercises/hwsubm/hw08/Rieder_Sabine_sabine.rieder@tum.de_471/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Rieder_Sabine_sabine.rieder@tum.de_471/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Rotar_Alexej_ga59zew@mytum.de_496/SENTMAIL
SS18/Exercises/hwsubm/hw08/Rotar_Alexej_ga59zew@mytum.de_496/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Rotar_Alexej_ga59zew@mytum.de_496/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Schmitt_Katharina_katharinaluise.schmitt@tum.de_495/SENTMAIL
SS18/Exercises/hwsubm/hw08/Schmitt_Katharina_katharinaluise.schmitt@tum.de_495/ex08.thy
SS18/Exercises/hwsubm/hw08/Schmitt_Katharina_katharinaluise.schmitt@tum.de_495/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Smith_Nicholas_nick.smith@tum.de_479/HW08.thy
SS18/Exercises/hwsubm/hw08/Smith_Nicholas_nick.smith@tum.de_479/SENTMAIL
SS18/Exercises/hwsubm/hw08/Smith_Nicholas_nick.smith@tum.de_479/testoutput.html
SS18/Exercises/hwsubm/hw08/Somasundaram_Arun_ge69kel@mytum.de_486/Homework08.thy
SS18/Exercises/hwsubm/hw08/Somasundaram_Arun_ge69kel@mytum.de_486/SENTMAIL
SS18/Exercises/hwsubm/hw08/Somasundaram_Arun_ge69kel@mytum.de_486/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Stamer_Florian_florian.stamer@tum.de_482/SENTMAIL
SS18/Exercises/hwsubm/hw08/Stamer_Florian_florian.stamer@tum.de_482/ex08.thy
SS18/Exercises/hwsubm/hw08/Stamer_Florian_florian.stamer@tum.de_482/user_error_log.txt
SS18/Exercises/hwsubm/hw08/Wielander_Felix_felix.wielander@tum.de_483/SENTMAIL
SS18/Exercises/hwsubm/hw08/Wielander_Felix_felix.wielander@tum.de_483/hw08tmpl.thy
SS18/Exercises/hwsubm/hw08/Wielander_Felix_felix.wielander@tum.de_483/user_error_log.txt
SS18/Exercises/hwsubm/hw08/meta.csv
Thys/Worklist_DFS.thy
--- a/SS18/Exercises/ROOT	Fri Jun 01 10:20:03 2018 +0200
+++ b/SS18/Exercises/ROOT	Wed Jun 13 11:16:59 2018 +0200
@@ -42,6 +42,16 @@
   theories ex08 hw08 hw08bonus
   document_files "root.tex" "exercise.sty" "build"
 
+session "ex09" in "ex09" = "HOL-Data_Structures" +
+  options [document = pdf, document_output = "generated", document_variants = "ex09"]
+  theories ex09 ex09_2 hw09
+  document_files "root.tex" "exercise.sty" "build"
+
+session "ex10" in "ex10" = "HOL-Data_Structures" +
+  options [document = pdf, document_output = "generated", document_variants = "ex10"]
+  theories [document = false] Trie1
+  theories ex10 ex10_2 hw10_1 hw10_2
+  document_files "root.tex" "exercise.sty" "build"
 
 (*
 session hwsol_basis = HOL +
Binary file SS18/Exercises/ex09.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/Balance.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,226 @@
+(* Author: Tobias Nipkow *)
+
+section \<open>Creating Balanced Trees\<close>
+
+theory Balance
+imports
+  "HOL-Library.Tree_Real"
+begin
+
+lemma [simp]: "xs \<noteq> [] \<Longrightarrow> min (length xs) (length xs div 2) < length xs" by (cases xs) auto
+
+fun bal :: "'a list \<Rightarrow> 'a tree" where
+  "bal xs = (
+    if xs=[] then Leaf
+    else
+      let
+        m = length xs div 2;
+        xs1 = take m xs;
+        a = xs!m;
+        xs2 = drop (m+1) xs;
+        l = bal xs1;
+        r = bal xs2
+      in
+        Node l a r
+    )"
+
+declare bal.simps[simp del]
+
+
+lemma bal_simps:
+  "bal [] = Leaf"
+  "xs\<noteq>[] \<Longrightarrow>
+   bal xs = (
+    let
+      m = length xs div 2;
+      xs1 = take m xs;
+      a = xs!m;
+      xs2 = drop (m+1) xs;
+      l = bal xs1;
+      r = bal xs2
+    in
+      Node l a r
+  )"
+  by(simp_all add: bal.simps)
+
+text\<open>Some of the following lemmas take advantage of the fact
+that \<open>bal xs n\<close> yields a result even if \<open>n > length xs\<close>.\<close>
+
+lemma bal_inorder: "inorder (bal xs) = xs"
+  apply (induction xs rule: bal.induct)
+  apply (auto simp: bal.simps Let_def Cons_nth_drop_Suc split: if_splits)
+  done
+
+
+lemma min_x_xd2_aux[simp]: "min xs ((xs::nat) div 2) = xs div 2" by auto
+
+lemma aux2: "n div 2 \<ge> n - (Suc (n div 2))" by auto
+
+thm floor_log2_div2[of "1+length xs"]
+
+lemma min_height_bal:
+  "min_height (bal xs) = nat(\<lfloor>log 2 (length xs + 1)\<rfloor>)"
+proof(induction xs rule: bal.induct)
+  case (1 xs) show ?case
+  proof cases
+    assume "xs = []" thus ?thesis
+      using "1.prems" by (simp add: bal_simps)
+  next
+    {
+      fix n :: nat
+      have "n div 2 \<ge> n - (Suc (n div 2))" by auto
+      hence "real (n div 2) \<ge> real (n - (Suc (n div 2)))" by auto
+      hence "\<lfloor>log 2 (1 + real (n div 2))\<rfloor> \<ge> \<lfloor>log 2 (1 + real (n - (Suc (n div 2))))\<rfloor>"
+        by (auto intro: floor_mono)
+      hence "nat \<lfloor>log 2 (1 + real (n div 2))\<rfloor> \<ge> nat \<lfloor>log 2 (1 + real (n - (Suc (n div 2))))\<rfloor>" by auto
+      note min_absorb2[OF this]
+    } note aux1 = this
+
+    assume [simp]: "xs\<noteq>[]"
+    hence [arith]: "length xs \<noteq> 0" by auto
+
+    note aux2 = floor_log2_div2[of "1+length xs", simplified]
+
+    have "nat (\<lfloor>log 2 (real (Suc (length xs) div 2))\<rfloor> + 1) = Suc (nat (\<lfloor>log 2 (real (Suc (length xs) div 2))\<rfloor>))"
+      sledgehammer
+
+    from 1 show ?case
+      apply (auto simp: bal_simps Let_def aux1 aux2)
+
+
+
+oops
+    assume [arith]: "n \<noteq> 0"
+    from "1.prems" obtain l r xs' where
+      b1: "bal (n div 2) xs = (l,xs')" and
+      b2: "bal (n - 1 - n div 2) (tl xs') = (r,ys)" and
+      t: "t = \<langle>l, hd xs', r\<rangle>"
+      by(auto simp: bal_simps Let_def split: prod.splits)
+    let ?log1 = "nat (floor(log 2 (n div 2 + 1)))"
+    let ?log2 = "nat (floor(log 2 (n - 1 - n div 2 + 1)))"
+    have IH1: "min_height l = ?log1" using "1.IH"(1) b1 by simp
+    have IH2: "min_height r = ?log2" using "1.IH"(2) b1 b2 by simp
+    have "(n+1) div 2 \<ge> 1" by arith
+    hence 0: "log 2 ((n+1) div 2) \<ge> 0" by simp
+    have "n - 1 - n div 2 + 1 \<le> n div 2 + 1" by arith
+    hence le: "?log2 \<le> ?log1"
+      by(simp add: nat_mono floor_mono)
+    have "min_height t = min ?log1 ?log2 + 1" by (simp add: t IH1 IH2)
+    also have "\<dots> = ?log2 + 1" using le by (simp add: min_absorb2)
+    also have "n - 1 - n div 2 + 1 = (n+1) div 2" by linarith
+    also have "nat (floor(log 2 ((n+1) div 2))) + 1
+       = nat (floor(log 2 ((n+1) div 2) + 1))"
+      using 0 by linarith
+    also have "\<dots> = nat (floor(log 2 (n + 1)))"
+      using floor_log2_div2[of "n+1"] by (simp add: log_mult)
+    finally show ?thesis .
+  qed
+qed
+
+lemma height_bal:
+  "bal n xs = (t,ys) \<Longrightarrow> height t = nat \<lceil>log 2 (n + 1)\<rceil>"
+proof(induction n xs arbitrary: t ys rule: bal.induct)
+  case (1 n xs) show ?case
+  proof cases
+    assume "n = 0" thus ?thesis
+      using "1.prems" by (simp add: bal_simps)
+  next
+    assume [arith]: "n \<noteq> 0"
+    from "1.prems" obtain l r xs' where
+      b1: "bal (n div 2) xs = (l,xs')" and
+      b2: "bal (n - 1 - n div 2) (tl xs') = (r,ys)" and
+      t: "t = \<langle>l, hd xs', r\<rangle>"
+      by(auto simp: bal_simps Let_def split: prod.splits)
+    let ?log1 = "nat \<lceil>log 2 (n div 2 + 1)\<rceil>"
+    let ?log2 = "nat \<lceil>log 2 (n - 1 - n div 2 + 1)\<rceil>"
+    have IH1: "height l = ?log1" using "1.IH"(1) b1 by simp
+    have IH2: "height r = ?log2" using "1.IH"(2) b1 b2 by simp
+    have 0: "log 2 (n div 2 + 1) \<ge> 0" by auto
+    have "n - 1 - n div 2 + 1 \<le> n div 2 + 1" by arith
+    hence le: "?log2 \<le> ?log1"
+      by(simp add: nat_mono ceiling_mono del: nat_ceiling_le_eq)
+    have "height t = max ?log1 ?log2 + 1" by (simp add: t IH1 IH2)
+    also have "\<dots> = ?log1 + 1" using le by (simp add: max_absorb1)
+    also have "\<dots> = nat \<lceil>log 2 (n div 2 + 1) + 1\<rceil>" using 0 by linarith
+    also have "\<dots> = nat \<lceil>log 2 (n + 1)\<rceil>"
+      using ceiling_log2_div2[of "n+1"] by (simp)
+    finally show ?thesis .
+  qed
+qed
+
+lemma balanced_bal:
+  assumes "bal n xs = (t,ys)" shows "balanced t"
+unfolding balanced_def
+using height_bal[OF assms] min_height_bal[OF assms]
+by linarith
+
+lemma height_bal_list:
+  "n \<le> length xs \<Longrightarrow> height (bal_list n xs) = nat \<lceil>log 2 (n + 1)\<rceil>"
+unfolding bal_list_def by (metis height_bal prod.collapse)
+
+lemma height_balance_list:
+  "height (balance_list xs) = nat \<lceil>log 2 (length xs + 1)\<rceil>"
+by (simp add: balance_list_def height_bal_list)
+
+corollary height_bal_tree:
+  "n \<le> length xs \<Longrightarrow> height (bal_tree n t) = nat\<lceil>log 2 (n + 1)\<rceil>"
+unfolding bal_list_def bal_tree_def
+using height_bal prod.exhaust_sel by blast
+
+corollary height_balance_tree:
+  "height (balance_tree t) = nat\<lceil>log 2 (size t + 1)\<rceil>"
+by (simp add: bal_tree_def balance_tree_def height_bal_list)
+
+corollary balanced_bal_list[simp]: "balanced (bal_list n xs)"
+unfolding bal_list_def by (metis  balanced_bal prod.collapse)
+
+corollary balanced_balance_list[simp]: "balanced (balance_list xs)"
+by (simp add: balance_list_def)
+
+corollary balanced_bal_tree[simp]: "balanced (bal_tree n t)"
+by (simp add: bal_tree_def)
+
+corollary balanced_balance_tree[simp]: "balanced (balance_tree t)"
+by (simp add: balance_tree_def)
+
+lemma wbalanced_bal: "bal n xs = (t,ys) \<Longrightarrow> wbalanced t"
+proof(induction n xs arbitrary: t ys rule: bal.induct)
+  case (1 n xs)
+  show ?case
+  proof cases
+    assume "n = 0"
+    thus ?thesis
+      using "1.prems" by(simp add: bal_simps)
+  next
+    assume "n \<noteq> 0"
+    with "1.prems" obtain l ys r zs where
+      rec1: "bal (n div 2) xs = (l, ys)" and
+      rec2: "bal (n - 1 - n div 2) (tl ys) = (r, zs)" and
+      t: "t = \<langle>l, hd ys, r\<rangle>"
+      by(auto simp add: bal_simps Let_def split: prod.splits)
+    have l: "wbalanced l" using "1.IH"(1)[OF \<open>n\<noteq>0\<close> refl rec1] .
+    have "wbalanced r" using "1.IH"(2)[OF \<open>n\<noteq>0\<close> refl rec1[symmetric] refl rec2] .
+    with l t size_bal[OF rec1] size_bal[OF rec2]
+    show ?thesis by auto
+  qed
+qed
+
+text\<open>An alternative proof via @{thm balanced_if_wbalanced}:\<close>
+lemma "bal n xs = (t,ys) \<Longrightarrow> balanced t"
+by(rule balanced_if_wbalanced[OF wbalanced_bal])
+
+lemma wbalanced_bal_list[simp]: "wbalanced (bal_list n xs)"
+by(simp add: bal_list_def) (metis prod.collapse wbalanced_bal)
+
+lemma wbalanced_balance_list[simp]: "wbalanced (balance_list xs)"
+by(simp add: balance_list_def)
+
+lemma wbalanced_bal_tree[simp]: "wbalanced (bal_tree n t)"
+by(simp add: bal_tree_def)
+
+lemma wbalanced_balance_tree: "wbalanced (balance_tree t)"
+by (simp add: balance_tree_def)
+
+hide_const (open) bal
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/RBT_exercises.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,270 @@
+theory RBT_exercises
+imports
+  "HOL-Data_Structures.RBT_Set"
+begin
+
+
+fun min_height :: "('a,'b) tree \<Rightarrow> nat" where
+"min_height Leaf = 0" |
+"min_height (Node _ l _ r) = min (min_height l) (min_height r) + 1"
+
+lemma min_height_le: "min_height t \<le> height t"
+  by (induction t) auto
+
+definition "balanced t \<equiv> height t - min_height t \<le> 1"
+
+lemma balanced_alt:
+  "balanced t \<longleftrightarrow> height t = min_height t \<or> height t = min_height t + 1"
+  unfolding balanced_def
+  apply auto
+  by (metis One_nat_def Suc_eq_plus1 diff_diff_cancel diff_zero le_Suc_eq le_add_diff_inverse le_zero_eq min_height_le)
+
+lemma "balanced (Node c l a r) \<Longrightarrow> balanced l \<and> balanced r"
+  unfolding balanced_def by (auto)
+
+lemma "balanced (Node c l a r) \<Longrightarrow> balanced l \<and> balanced r"
+  unfolding balanced_alt
+  by (auto simp: le_antisym min_height_le split: if_splits)
+
+
+fun mk_rbt :: "('a,unit) tree \<Rightarrow> 'a rbt" where
+  "mk_rbt Leaf = Leaf"
+| "mk_rbt (Node _ l a r) = (let
+    l'=mk_rbt l;
+    r'=mk_rbt r
+  in
+    if min_height l > min_height r then
+      B (paint Red l') a r'
+    else if min_height l < min_height r then
+      B l' a (paint Red r')
+    else
+      B l' a r'
+  )"
+
+lemma mk_rbt_color[simp]: "color (mk_rbt t) = Black" by (cases t) (auto simp: Let_def)
+
+lemma mk_rbt_bheight[simp]: "balanced t \<Longrightarrow> bheight (mk_rbt t) = min_height t"
+proof (induction t)
+  case Leaf
+  then show ?case by auto
+next
+  case (Node x1 t1 x3 t2)
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  from Node.prems B1 B2 IH show ?case
+    by (auto simp: Let_def bheight_paint_Red not_le balanced_alt split: if_splits)
+
+qed
+
+
+lemma mk_rbt_invh: "balanced t \<Longrightarrow> invh (mk_rbt t)"
+proof (induction t)
+  case Leaf
+  then show ?case by auto
+next
+  case (Node x1 t1 x3 t2)
+
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  from Node.prems B1 B2 IH show ?case
+    by (auto simp: Let_def bheight_paint_Red balanced_alt intro: invh_paint)
+
+qed
+
+lemma invc_paint_Red: "invc (paint Red t) = (case t of Leaf \<Rightarrow> True | Node c l a r \<Rightarrow> invc l \<and> invc r \<and> color l = Black \<and> color r = Black)"
+  by (cases t) (auto)
+
+lemma mk_rbt_invc: "balanced t \<Longrightarrow> invc (mk_rbt t)"
+proof (induction t)
+  case Leaf
+  then show ?case by simp
+next
+  case (Node x1 t1 x3 t2)
+
+  case (Node x1 t1 x3 t2)
+
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  from Node.prems B1 B2 IH show ?case
+    apply -
+    apply (auto simp: Let_def invc_paint_Red balanced_alt min_def max_def split!: tree.split if_splits)
+    apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (meson leD less_le_trans min_height_le)
+    apply (metis leD min_height_le)
+    apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (metis leD min_height_le)
+    apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+    apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (meson leD less_le_trans min_height_le)
+    apply (metis leD min_height_le)
+    apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (metis leD min_height_le)
+    apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+    apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (meson leD less_le_trans min_height_le)
+    apply (metis leD min_height_le)
+    apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (metis leD min_height_le)
+    apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+    apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (meson leD less_le_trans min_height_le)
+    apply (metis leD min_height_le)
+    apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+    apply (metis leD min_height_le)
+    apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+    done
+
+qed
+
+
+theorem mk_rbt_is_rbt: "balanced t \<Longrightarrow> rbt (mk_rbt t)"
+  using mk_rbt_invh mk_rbt_invc unfolding rbt_def by auto
+
+theorem mk_rbt_inorder: "inorder (mk_rbt t) = inorder t"
+  by (induction t) (auto simp: Let_def inorder_paint)
+
+
+fun mk_rbt' :: "('a,unit) tree \<Rightarrow> 'a rbt \<times> nat"
+where
+  "mk_rbt' Leaf = (Leaf,0)"
+| "mk_rbt' (Node _ l a r) = (let
+    (l',hl)=mk_rbt' l;
+    (r',hr)=mk_rbt' r
+  in
+    if hl < hr then
+      (B l' a (paint Red r'), Suc hl)
+    else if hl > hr then
+      (B (paint Red l') a r', Suc hr)
+    else
+      (B l' a r', Suc hl)
+  )"
+
+lemma mk_rbt'_refine: "mk_rbt' t = (mk_rbt t, min_height t)"
+  by (induction t) auto
+
+
+
+(* Alternative proof with big case distinction *)
+
+
+lemma balanced_node_cases:
+  fixes l r :: "('a,'b) tree"
+  assumes "balanced (Node c l a r)"
+  obtains
+    "balanced l" "balanced r" "height r = min_height r" "min_height l = min_height r" " height l = min_height r"
+  | "balanced l" "balanced r" "height r = Suc (height l)" " min_height r = Suc (height l)" " min_height l = height l"
+  | "balanced l" "balanced r" "height r = Suc (min_height l)" " min_height r = Suc (min_height l)" " height l = Suc (min_height l)"
+  | "balanced l" "balanced r" "height r = Suc (height l)" " min_height r = height l" " min_height l = height l"
+  | "balanced l" "balanced r" "height r = Suc (min_height r)" " min_height l = min_height r" " height l = Suc (min_height r)"
+  | "balanced l" "balanced r" "height r = Suc (min_height r)" " height l = Suc (min_height r)" " min_height l = Suc (min_height r)"
+  | "balanced l" "balanced r" "height l = Suc (height r)" " min_height l = height r" " min_height r = height r"
+  | "balanced l" "balanced r" "height l = Suc (height r)" " min_height r = height r" " min_height l = Suc (height r)"
+proof -
+  from assms have [simp, intro!]: "balanced l" "balanced r" by (auto simp: balanced_def)
+
+  have aux1: "a\<le>b \<Longrightarrow> b-a\<le>Suc 0 \<longleftrightarrow> b=a \<or> b=Suc a" for a b by auto
+
+  have balanced_alt: "balanced t \<longleftrightarrow> height t = min_height t \<or> height t = min_height t + 1" for t :: "('a,'b) tree"
+    unfolding balanced_def
+    by (simp add: aux1 min_height_le)
+
+  have less_cases: "NO_MATCH (Suc X) a \<Longrightarrow> a<b \<longleftrightarrow> b=Suc a \<or> Suc a < b" for X a b by auto
+
+  from assms show ?thesis
+    unfolding balanced_alt
+    apply (auto simp: aux1)
+    apply (auto simp: min_def max_def not_le le_less less_cases split: if_splits)
+    using min_height_le[of r] min_height_le[of l] apply auto
+    apply (auto simp: min_def max_def not_le le_less less_cases split: if_splits)
+    apply (blast intro: that)+
+    done
+qed
+
+lemma mk_rbt_bheight': "balanced t \<Longrightarrow> bheight (mk_rbt t) = min_height t"
+  apply (induction t)
+  apply (auto simp: Let_def bheight_paint_Red not_le split: if_splits)
+  apply (auto simp: min_def max_def elim: balanced_node_cases split: if_splits)
+  done
+
+
+
+lemma mk_rbt_invh': "balanced t \<Longrightarrow> invh (mk_rbt t)"
+  apply (induction t)
+  apply (auto simp: Let_def bheight_paint_Red intro: invh_paint)
+  apply (erule balanced_node_cases; auto intro: invh_paint; fail)+
+  done
+
+
+lemma mk_rbt_invc': "balanced t \<Longrightarrow> invc (mk_rbt t)"
+proof (induction t)
+  case Leaf
+  then show ?case by simp
+next
+  case (Node x1 t1 x3 t2)
+  then show ?case
+    apply -
+    apply (auto simp: Let_def invc_paint_Red split!: tree.split if_splits; erule balanced_node_cases; auto)
+    apply ((cases t1; simp; erule balanced_node_cases; simp; auto)+) [4]
+    apply ((cases t2; simp; erule balanced_node_cases; simp; auto)+) [4]
+    done
+qed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+text \<open>Consider the following variant of @{const ins}:\<close>
+
+fun ins2 :: "'a::linorder \<Rightarrow> 'a rbt \<Rightarrow> 'a rbt" where
+"ins2 x Leaf = R Leaf x Leaf" |
+"ins2 x (Node c l a r) =
+  (case cmp x a of
+     LT \<Rightarrow> baliL (ins x l) a r |
+     GT \<Rightarrow> baliR l a (ins x r) |
+     EQ \<Rightarrow> Node c l a r)"
+
+text \<open>Under what condition is the following lemma true?
+Find the least restrictive condition and prove the lemma.\<close>
+
+lemma "condition \<Longrightarrow> ins2 x t = ins x t"
+oops
+(*<*)
+lemma "color t = Black \<Longrightarrow> ins2 x t = ins x t"
+by(induction x t rule: ins.induct) auto
+(*>*)
+
+text \<open>Now show that if we drop the condition that the root of a red-black tree is black,
+the height is still logarithmic in the size. You need to prove modified versions of the lemmas
+@{thm [source] rbt_height_bheight} and @{thm [source] rbt_height_le}
+from subsection \<open>Height-Size Relation\<close> in theory @{theory RBT_Set}:
+replace @{prop "rbt t"} by @{prop "invc t"} and  @{prop "invh t"} and
+modified the inequality in the conclusion.\<close>
+
+lemma height_bheight: "\<lbrakk> invc t; invh t \<rbrakk> \<Longrightarrow> height t / 2 \<le> bheight t + 1"
+by (auto dest: rbt_height_bheight_if split: if_splits)
+
+lemma height_log: assumes "invc t" "invh t" shows "height t \<le> 2 * log 2 (size1 t) + 2"
+using bheight_size_bound height_bheight assms le_log2_of_power by fastforce
+
+
+
+
+
+
+
+end
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/T23_ex.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,77 @@
+theory T23_ex
+imports
+  "~~/src/HOL/Data_Structures/Tree23_Set"
+begin
+text \<open>\Exercise{Joining 2-3-Trees}\<close>
+
+fun joinL :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i" where
+"joinL l x r =
+  (if height l = height r then Up\<^sub>i l x r
+   else case r of
+     Node2 r1 a r2 \<Rightarrow>
+       (case joinL l x r1 of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node2 t a r2) |
+         Up\<^sub>i t1 b t2 \<Rightarrow> T\<^sub>i (Node3 t1 b t2 a r2)) |
+     Node3 r1 a r2 b r3 \<Rightarrow> (case joinL l x r1 of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node3 t a r2 b r3) |
+         Up\<^sub>i t1 y t2 \<Rightarrow> Up\<^sub>i (Node2 t1 y t2) a (Node2 r2 b r3)))"
+
+lemma bal_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinL l x r)) \<and> height(joinL l x r) = height r"
+apply(induction r)
+  apply simp
+ apply (fastforce simp: le_less split: up\<^sub>i.split)
+apply (fastforce simp: le_less split: up\<^sub>i.split)
+done
+
+lemma inorder_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinL l x r)) = inorder l @x # inorder r"
+  apply(induction r)
+  apply (auto split: up\<^sub>i.splits)
+  done
+
+fun joinR :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i" where
+"joinR l x r =
+  (if height l = height r then Up\<^sub>i l x r
+   else case l of
+     Node2 l1 a l2 \<Rightarrow>
+       (case joinR l2 x r of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node2 l1 a t) |
+         Up\<^sub>i t1 b t2 \<Rightarrow> T\<^sub>i (Node3 l1 a t1 b t2)) |
+     Node3 l1 a l2 b l3 \<Rightarrow> (case joinR l3 x r of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node3 l1 a l2 b t) |
+         Up\<^sub>i t1 y t2 \<Rightarrow> Up\<^sub>i (Node2 l1 a l2) b (Node2 t1 y t2)))"
+
+lemma bal_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinR l x r)) \<and> height(joinR l x r) = height l"
+apply(induction l)
+  apply simp
+ apply (auto simp: le_less split!: up\<^sub>i.splits tree23.split)[]
+apply (fastforce simp: le_less split: up\<^sub>i.split)
+done
+
+lemma inorder_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinR l x r)) = inorder l @x # inorder r"
+  apply(induction l)
+  apply simp
+  apply (auto split!: up\<^sub>i.splits tree23.split)
+  done
+
+
+
+fun join :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a tree23" where
+"join l x r =
+  (if height l > height r
+   then tree\<^sub>i(joinR l x r)
+   else if height l < height r
+   then tree\<^sub>i(joinL l x r)
+   else Node2 l x r)"
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> bal (join l x r)"
+  by(auto simp: bal_joinL bal_joinR simp del: joinL.simps joinR.simps)
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> inorder (join l x r) = inorder l @x # inorder r"
+  by(auto simp: inorder_joinL inorder_joinR simp del: joinL.simps joinR.simps)
+
+
+
+
+end
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/document/build	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+${ISABELLE_TOOL} latex -o sty root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+cp root.pdf ../../../$2.pdf
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/document/exercise.sty	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,51 @@
+
+\newcommand{\Lecture}{Functional Data Structures}
+\newcommand{\Semester}{SS 2018}
+\newcommand{\Prof}{Prof.~Tobias~Nipkow,~Ph.D.}
+\newcommand{\Tutor}{Dr. Peter Lammich}
+
+\newcounter{sheet}
+\newcounter{homework}
+
+\newlength{\abslength}\setlength{\abslength}{2mm plus 1mm minus 1mm}
+\newcommand{\abs}{\par\vspace{\abslength}}
+
+\newlength{\TUMBr}\settowidth{\TUMBr}{{\bf Technische Universit{\"a}t M{\"u}nchen}}
+\newcommand{\Header}[5]{{\bf
+ \makebox[\TUMBr]{Technische Universit{\"a}t M{\"u}nchen} \hfill #3\\
+ \makebox[\TUMBr]{Institut f{\"u}r Informatik} \hfill #4\\
+ \makebox[\TUMBr]{#1} \hfill #5\\
+ \makebox[\TUMBr]{#2}}\abs}
+
+\newcommand{\Title}[1]{%
+  \begin{center}{\LARGE\bf\Lecture}\\[1ex]{\bf Exercise Sheet #1}\end{center}}
+
+\newcommand{\ExerciseSheet}[2]{%
+  \pagestyle{empty}%
+  \setcounter{sheet}{#1}%
+  \vspace*{-2cm}\Header{\Prof}{\Tutor}{\Semester}{#2}{}\vspace*{1cm}%
+  \Title{#1}\abs}
+
+\newcounter{exercise}
+\newcommand{\Exercise}[1]{%
+  \refstepcounter{exercise}%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Exercise \arabic{sheet}.\arabic{exercise}\ \ \normalfont\sffamily #1}}}
+
+\newcommand{\Homework}[2]{%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Homework \arabic{sheet}\ \ \normalfont\sffamily #1}}%
+  \emph{Submission until Friday, #2, 11:59am.}}
+
+\newcommand{\NumHomework}[2]{%
+  \refstepcounter{homework}%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Homework \arabic{sheet}.\arabic{homework}\ \ \normalfont\sffamily #1}}%
+  \emph{Submission until Friday, #2, 11:59am.}}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/document/root.tex	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,66 @@
+\documentclass[11pt,a4paper]{scrartcl}
+\usepackage{isabelle,isabellesym}
+\usepackage{exercise}
+\usepackage{amsmath}
+
+% further packages required for unusual symbols (see also
+% isabellesym.sty), use only when needed
+
+\usepackage{amssymb}
+  %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>,
+  %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>,
+  %\<triangleq>, \<yen>, \<lozenge>
+
+%\usepackage[greek,english]{babel}
+  %option greek for \<euro>
+  %option english (default language) for \<guillemotleft>, \<guillemotright>
+
+\usepackage[latin1]{inputenc}
+  %for \<onesuperior>, \<onequarter>, \<twosuperior>, \<onehalf>,
+  %\<threesuperior>, \<threequarters>, \<degree>
+
+\usepackage[only,bigsqcap]{stmaryrd}
+  %for \<Sqinter>
+
+%\usepackage{eufrak}
+  %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)
+
+%\usepackage{textcomp}
+  %for \<cent>, \<currency>
+
+% this should be the last package used
+\usepackage{pdfsetup}
+
+% urls in roman style, theory text in math-similar italics
+\urlstyle{rm}
+\isabellestyle{it}
+
+% for uniform font size
+%\renewcommand{\isastyle}{\isastyleminor}
+
+\begin{document}
+
+% sane default for proof documents
+\parindent 0pt\parskip 0.5ex
+
+
+\renewcommand{\isachardoublequote}{`\"}
+\renewcommand{\isachardoublequoteopen}{``}
+\renewcommand{\isachardoublequoteclose}{''}
+\renewcommand{\isacharunderscore}{\_}
+\renewcommand{\isacharunderscorekeyword}{\_}
+
+
+% generated text of all theories
+\input{session}
+
+% optional bibliography
+%\bibliographystyle{abbrv}
+%\bibliography{root}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/ex09.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,58 @@
+(*<*)
+theory ex09
+  imports Main "HOL-Data_Structures.RBT_Set"
+begin
+(*>*)
+
+
+text {* \ExerciseSheet{9}{8.~6.~2018} *}
+
+text \<open>\Exercise{Indicate Unchanged by Option}
+
+  Write an insert function for red-black trees that either inserts the element
+  and returns a new tree, or returns None if the element was already in the tree
+\<close>
+
+fun ins' :: "'a::linorder \<Rightarrow> 'a rbt \<Rightarrow> 'a rbt option"
+(*<*)
+where
+"ins' x Leaf = Some (R Leaf x Leaf)" |
+"ins' x (B l a r) =
+  (case cmp x a of
+     LT \<Rightarrow> (case ins' x l of None \<Rightarrow> None | Some l \<Rightarrow> Some (baliL l a r)) |
+     GT \<Rightarrow> (case ins' x r of None \<Rightarrow> None | Some r \<Rightarrow> Some (baliR l a r)) |
+     EQ \<Rightarrow> None)" |
+"ins' x (R l a r) =
+  (case cmp x a of
+    LT \<Rightarrow> (case ins' x l of None \<Rightarrow> None | Some l \<Rightarrow> Some (R l a r)) |
+    GT \<Rightarrow> (case ins' x r of None \<Rightarrow> None | Some r \<Rightarrow> Some (R l a r)) |
+    EQ \<Rightarrow> None)"
+
+lemma baliR_id: "\<lbrakk>invc l; invc r\<rbrakk> \<Longrightarrow> baliR l a r = B l a r"
+  by (cases "(l,a,r)" rule: baliR.cases; auto)
+
+lemma baliL_id: "\<lbrakk>invc l; invc r\<rbrakk> \<Longrightarrow> baliL l a r = B l a r"
+  by (cases "(l,a,r)" rule: baliL.cases; auto)
+(*>*)
+
+lemma "invc t \<Longrightarrow> case ins' x t of None \<Rightarrow> ins x t = t | Some t' \<Rightarrow> ins x t = t'"
+(*<*)
+proof (induction x t rule: ins.induct)
+  case (1 x)
+  then show ?case by simp
+next
+  case (2 x l a r)
+
+  then show ?case
+    apply (auto split: option.splits simp: baliL_id baliR_id)
+    done
+
+next
+  case (3 x l a r)
+  then show ?case by (auto split: option.splits)
+qed
+(*>*)
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/ex09_2.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,115 @@
+(*<*)
+theory ex09_2
+imports
+  "~~/src/HOL/Data_Structures/Tree23_Set"
+begin
+(*>*)
+
+text \<open>\Exercise{Joining 2-3-Trees}
+
+  Write a join function for 2-3-trees: The function shall take two
+  2-3-trees \<open>l\<close> and \<open>r\<close> and an element \<open>x\<close>, and return a new 2-3-tree with
+  the inorder-traversal \<open>l x r\<close> .
+
+  Write two functions, one for the height of \<open>l\<close> being greater, the
+  other for the height of \<open>r\<close> being greater.
+\<close>
+
+
+
+text \<open>\<open>height r\<close> greater\<close>
+fun joinL :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i"
+(*<*)
+where
+"joinL l x r =
+  (if height l = height r then Up\<^sub>i l x r
+   else case r of
+     Node2 r1 a r2 \<Rightarrow>
+       (case joinL l x r1 of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node2 t a r2) |
+         Up\<^sub>i t1 b t2 \<Rightarrow> T\<^sub>i (Node3 t1 b t2 a r2)) |
+     Node3 r1 a r2 b r3 \<Rightarrow> (case joinL l x r1 of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node3 t a r2 b r3) |
+         Up\<^sub>i t1 y t2 \<Rightarrow> Up\<^sub>i (Node2 t1 y t2) a (Node2 r2 b r3)))"
+(*>*)
+
+lemma bal_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinL l x r)) \<and> height(joinL l x r) = height r"
+(*<*)
+apply(induction r)
+  apply simp
+ apply (fastforce simp: le_less split: up\<^sub>i.split)
+apply (fastforce simp: le_less split: up\<^sub>i.split)
+done
+(*>*)
+
+lemma inorder_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinL l x r)) = inorder l @x # inorder r"
+(*<*)
+  apply(induction r)
+  apply (auto split: up\<^sub>i.splits)
+  done
+(*>*)
+
+text \<open>\<open>height l\<close> greater\<close>
+fun joinR :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i"
+(*<*)
+where
+"joinR l x r =
+  (if height l = height r then Up\<^sub>i l x r
+   else case l of
+     Node2 l1 a l2 \<Rightarrow>
+       (case joinR l2 x r of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node2 l1 a t) |
+         Up\<^sub>i t1 b t2 \<Rightarrow> T\<^sub>i (Node3 l1 a t1 b t2)) |
+     Node3 l1 a l2 b l3 \<Rightarrow> (case joinR l3 x r of
+         T\<^sub>i t \<Rightarrow> T\<^sub>i (Node3 l1 a l2 b t) |
+         Up\<^sub>i t1 y t2 \<Rightarrow> Up\<^sub>i (Node2 l1 a l2) b (Node2 t1 y t2)))"
+(*>*)
+
+lemma bal_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinR l x r)) \<and> height(joinR l x r) = height l"
+  text \<open>Note the generalization: We augmented the lemma with a statement about the height of the result.\<close>
+(*<*)
+apply(induction l)
+  apply simp
+ apply (auto simp: le_less split!: up\<^sub>i.splits tree23.split)[]
+apply (fastforce simp: le_less split: up\<^sub>i.split)
+done
+(*>*)
+
+lemma inorder_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinR l x r)) = inorder l @x # inorder r"
+(*<*)
+  apply(induction l)
+  apply simp
+  apply (auto split!: up\<^sub>i.splits tree23.split)
+  done
+(*>*)
+
+
+text \<open>Combine both functions\<close>
+fun join :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a tree23"
+(*<*)
+where
+"join l x r =
+  (if height l > height r
+   then tree\<^sub>i(joinR l x r)
+   else if height l < height r
+   then tree\<^sub>i(joinL l x r)
+   else Node2 l x r)"
+(*>*)
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> bal (join l x r)"
+(*<*)
+  by(auto simp: bal_joinL bal_joinR simp del: joinL.simps joinR.simps)
+(*>*)
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> inorder (join l x r) = inorder l @x # inorder r"
+(*<*)
+  by(auto simp: inorder_joinL inorder_joinR simp del: joinL.simps joinR.simps)
+(*>*)
+
+
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/ex09_2tmpl.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,60 @@
+(*<*)
+theory ex09_2tmpl
+imports
+  "~~/src/HOL/Data_Structures/Tree23_Set"
+begin
+(*>*)
+
+text \<open>\Exercise{Joining 2-3-Trees}
+
+  Write a join function for 2-3-trees: The function shall take two
+  2-3-trees \<open>l\<close> and \<open>r\<close> and an element \<open>x\<close>, and return a new 2-3-tree with
+  the inorder-traversal \<open>l x r\<close> .
+
+  Write two functions, one for the height of \<open>l\<close> being greater, the
+  other for the height of \<open>r\<close> being greater.
+\<close>
+
+
+
+text \<open>\<open>height r\<close> greater\<close>
+fun joinL :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i"
+where
+  "joinL l x r = undefined"
+
+lemma bal_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinL l x r)) \<and> height(joinL l x r) = height r"
+  text \<open>Note the generalization: We augmented the lemma with a statement about the height of the result.\<close>
+  sorry
+
+lemma inorder_joinL: "\<lbrakk> bal l; bal r; height l \<le> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinL l x r)) = inorder l @x # inorder r"
+  sorry
+
+text \<open>\<open>height l\<close> greater\<close>
+fun joinR :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a up\<^sub>i"
+where
+"joinR l x r = undefined"
+
+lemma bal_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow>
+  bal (tree\<^sub>i (joinR l x r)) \<and> height(joinR l x r) = height l"
+  sorry
+
+lemma inorder_joinR: "\<lbrakk> bal l; bal r; height l \<ge> height r \<rbrakk> \<Longrightarrow> inorder (tree\<^sub>i (joinR l x r)) = inorder l @x # inorder r"
+  sorry
+
+text \<open>Combine both functions\<close>
+fun join :: "'a tree23 \<Rightarrow> 'a \<Rightarrow> 'a tree23 \<Rightarrow> 'a tree23"
+where
+"join l x r = undefined"
+
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> bal (join l x r)"
+  sorry
+
+lemma "\<lbrakk> bal l; bal r \<rbrakk> \<Longrightarrow> inorder (join l x r) = inorder l @x # inorder r"
+  sorry
+
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/ex09tmpl.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,24 @@
+(*<*)
+theory ex09tmpl
+  imports Main "HOL-Data_Structures.RBT_Set"
+begin
+(*>*)
+
+
+text {* \ExerciseSheet{9}{8.~6.~2018} *}
+
+text \<open>\Exercise{Indicate Unchanged by Option}
+
+  Write an insert function for red-black trees that either inserts the element
+  and returns a new tree, or returns None if the element was already in the tree
+\<close>
+
+fun ins' :: "'a::linorder \<Rightarrow> 'a rbt \<Rightarrow> 'a rbt option"
+where
+"ins' _ _ = undefined"
+
+lemma "invc t \<Longrightarrow> case ins' x t of None \<Rightarrow> ins x t = t | Some t' \<Rightarrow> ins x t = t'"
+  sorry
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/hw09.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,255 @@
+(*<*)
+theory hw09
+  imports Main "HOL-Data_Structures.RBT_Set"
+begin
+(*>*)
+
+text \<open>\NumHomework{Balanced Tree to RBT}{15.~6.~2018}
+
+  A tree is balanced, if its minimum height and its height differ by at most 1.
+\<close>
+
+fun min_height :: "('a,'b) tree \<Rightarrow> nat" where
+"min_height Leaf = 0" |
+"min_height (Node _ l _ r) = min (min_height l) (min_height r) + 1"
+
+definition "balanced t \<equiv> height t - min_height t \<le> 1"
+
+text \<open>The following function paints a balanced tree to form a valid red-black tree
+  with the same structure. The task of this homework is to prove this!
+\<close>
+
+fun mk_rbt :: "('a,unit) tree \<Rightarrow> 'a rbt" where
+  "mk_rbt Leaf = Leaf"
+| "mk_rbt (Node _ l a r) = (let
+    l'=mk_rbt l;
+    r'=mk_rbt r
+  in
+    if min_height l > min_height r then
+      B (paint Red l') a r'
+    else if min_height l < min_height r then
+      B l' a (paint Red r')
+    else
+      B l' a r'
+  )"
+
+
+text \<open>
+  \subsection*{Warmup}
+
+  Show that the left and right subtree of a balanced tree are, again, balanced
+\<close>
+
+lemma balanced_subt: "balanced (Node c l a r) \<Longrightarrow> balanced l \<and> balanced r"
+  (*<*)
+  unfolding balanced_def by (auto)
+  (*>*)
+
+text \<open>Show the following alternative characterization of balanced:\<close>
+
+(*<*)
+lemma min_height_le: "min_height t \<le> height t"
+  by (induction t) auto
+(*>*)
+lemma balanced_alt:
+  "balanced t \<longleftrightarrow> height t = min_height t \<or> height t = min_height t + 1"
+
+text \<open>Hint: Auxiliary lemma relating @{term \<open>height t\<close>} and @{term \<open>min_height t\<close>}\<close>
+(*<*)
+  unfolding balanced_def
+  apply auto
+  by (metis One_nat_def Suc_eq_plus1 diff_diff_cancel diff_zero le_Suc_eq le_add_diff_inverse le_zero_eq min_height_le)
+(*>*)
+
+text \<open>
+  \subsection*{The Easy Parts}
+
+  Show that \<open>mk_rbt\<close> does not change the inorder-traversal
+\<close>
+lemma mk_rbt_inorder: "inorder (mk_rbt t) = inorder t"
+(*<*)
+  by (induction t) (auto simp: Let_def inorder_paint)
+(*>*)
+
+text \<open>Show that the color of the root node is always black\<close>
+lemma mk_rbt_color: "color (mk_rbt t) = Black"
+(*<*)
+  by (cases t) (auto simp: Let_def)
+(*>*)
+
+text \<open>
+  \subsection*{Medium Complex Parts}
+
+  Show that the black-height of the returned tree is the minimum height of the argument tree
+\<close>
+
+lemma mk_rbt_bheight: "balanced t \<Longrightarrow> bheight (mk_rbt t) = min_height t"
+text \<open>Hint: Use Isar to have better control when to unfold with @{thm [source] balanced_alt},
+  and when to use @{thm [source] balanced_subt} (e.g. to discharge the premises of the IH)
+\<close>
+(*<*)
+proof (induction t)
+  case Leaf
+  then show ?case by auto
+next
+  case (Node x1 t1 x3 t2)
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  from Node.prems B1 B2 IH show ?case
+    by (auto simp: Let_def bheight_paint_Red not_le balanced_alt mk_rbt_color split: if_splits)
+
+qed
+(*>*)
+
+text \<open>
+  Show that the returned tree satisfies the height invariant.
+\<close>
+
+lemma mk_rbt_invh: "balanced t \<Longrightarrow> invh (mk_rbt t)"
+(*<*)
+proof (induction t)
+  case Leaf
+  then show ?case by auto
+next
+  case (Node x1 t1 x3 t2)
+
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  from Node.prems B1 B2 IH show ?case
+    by (auto
+      simp: Let_def bheight_paint_Red balanced_alt mk_rbt_bheight mk_rbt_color
+      intro: invh_paint)
+
+qed
+(*>*)
+
+text \<open>
+  \subsection*{The Hard Part (3 Bonus Points)}
+
+  For {\bf three bonus points}, show that the returned tree satisfies the color invariant.
+
+  Warning: This requires careful case splitting, via a clever combination of
+    automation and manual proof (Isar, aux-lemmas), in order to deal with the
+    multiple cases without a combinatorial explosion of the proofs.
+\<close>
+
+(*<*)
+lemma invc_paint_Red: "invc (paint Red t) = (case t of Leaf \<Rightarrow> True | Node c l a r \<Rightarrow> invc l \<and> invc r \<and> color l = Black \<and> color r = Black)"
+  by (cases t) (auto)
+(*>*)
+
+lemma mk_rbt_invc: "balanced t \<Longrightarrow> invc (mk_rbt t)"
+(*<*)
+proof (induction t)
+  case Leaf
+  then show ?case by simp
+next
+  case (Node x1 t1 x3 t2)
+
+  case (Node x1 t1 x3 t2)
+
+  from Node.prems have B1: "balanced t1" and B2: "balanced t2" by (auto simp: balanced_def)
+
+  note IH = Node.IH(1)[OF B1] Node.IH(2)[OF B2]
+
+  note [simp] = mk_rbt_color
+
+  from Node.prems B1 B2 IH show ?case
+    apply -
+    apply (clarsimp simp: Let_def invc_paint_Red balanced_alt min_def max_def split!: tree.split if_splits)
+    subgoal
+      apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (meson leD less_le_trans min_height_le)
+      apply (metis leD min_height_le)
+      done
+    subgoal
+      apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (metis leD min_height_le)
+      apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+      done
+    subgoal
+      apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (meson leD less_le_trans min_height_le)
+      apply (metis leD min_height_le)
+      done
+    subgoal
+      apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (metis leD min_height_le)
+      apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+      done
+    subgoal
+      apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (meson leD less_le_trans min_height_le)
+      apply (metis leD min_height_le)
+      done
+    subgoal
+      apply (cases t1; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (metis leD min_height_le)
+      apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+      done
+    subgoal
+      apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (meson leD less_le_trans min_height_le)
+      apply (metis leD min_height_le)
+      done
+    subgoal
+      apply (cases t2; auto simp: Let_def balanced_alt min_def max_def not_le split: if_splits)
+      apply (metis leD min_height_le)
+      apply (meson leD le_Suc_eq less_trans_Suc min_height_le)
+      done
+    done
+qed
+
+
+theorem mk_rbt_is_rbt: "balanced t \<Longrightarrow> rbt (mk_rbt t)"
+  using mk_rbt_invh mk_rbt_invc mk_rbt_color unfolding rbt_def by auto
+(*>*)
+
+
+
+text \<open>\NumHomework{Linear-Time Repainting}{15.~6.~2018}
+
+  Write a linear-time version of \<open>mk_rbt\<close>, and show that it behaves like
+  \<open>mk_rbt\<close>.
+
+  Idea: Compute the min-height during the same recursion as you build
+    the tree.
+
+  Note: No formal complexity proof required.
+\<close>
+
+fun mk_rbt' :: "('a,unit) tree \<Rightarrow> 'a rbt \<times> nat" -- \<open>Returns the RBT and the min-height of the argument\<close>
+(*<*)
+where
+  "mk_rbt' Leaf = (Leaf,0)"
+| "mk_rbt' (Node _ l a r) = (let
+    (l',hl)=mk_rbt' l;
+    (r',hr)=mk_rbt' r
+  in
+    if hl < hr then
+      (B l' a (paint Red r'), Suc hl)
+    else if hl > hr then
+      (B (paint Red l') a r', Suc hr)
+    else
+      (B l' a r', Suc hl)
+  )"
+
+lemma mk_rbt'_refine_aux: "mk_rbt' t = (mk_rbt t, min_height t)"
+  by (induction t) auto
+(*>*)
+
+
+lemma mk_rbt'_refine: "fst (mk_rbt' t) = mk_rbt t"
+(*<*)
+  by (simp add: mk_rbt'_refine_aux)
+(*>*)
+
+
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex09/hw09tmpl.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,130 @@
+(*<*)
+theory hw09tmpl
+  imports Main "HOL-Data_Structures.RBT_Set"
+begin
+(*>*)
+
+text \<open>\NumHomework{Balanced Tree to RBT}{15.~6.~2018}
+
+  A tree is balanced, if its minimum height and its height differ by at most 1.
+\<close>
+
+fun min_height :: "('a,'b) tree \<Rightarrow> nat" where
+"min_height Leaf = 0" |
+"min_height (Node _ l _ r) = min (min_height l) (min_height r) + 1"
+
+definition "balanced t \<equiv> height t - min_height t \<le> 1"
+
+text \<open>The following function paints a balanced tree to form a valid red-black tree
+  with the same structure. The task of this homework is to prove this!
+\<close>
+
+fun mk_rbt :: "('a,unit) tree \<Rightarrow> 'a rbt" where
+  "mk_rbt Leaf = Leaf"
+| "mk_rbt (Node _ l a r) = (let
+    l'=mk_rbt l;
+    r'=mk_rbt r
+  in
+    if min_height l > min_height r then
+      B (paint Red l') a r'
+    else if min_height l < min_height r then
+      B l' a (paint Red r')
+    else
+      B l' a r'
+  )"
+
+
+text \<open>
+  \subsection*{Warmup}
+
+  Show that the left and right subtree of a balanced tree are, again, balanced
+\<close>
+
+lemma balanced_subt: "balanced (Node c l a r) \<Longrightarrow> balanced l \<and> balanced r"
+  sorry
+
+text \<open>Show the following alternative characterization of balanced:\<close>
+
+lemma balanced_alt:
+  "balanced t \<longleftrightarrow> height t = min_height t \<or> height t = min_height t + 1"
+  text \<open>Hint: Auxiliary lemma relating @{term \<open>height t\<close>} and @{term \<open>min_height t\<close>}\<close>
+  sorry
+
+text \<open>
+  \subsection*{The Easy Parts}
+
+  Show that \<open>mk_rbt\<close> does not change the inorder-traversal
+\<close>
+lemma mk_rbt_inorder: "inorder (mk_rbt t) = inorder t"
+  sorry
+
+text \<open>Show that the color of the root node is always black\<close>
+lemma mk_rbt_color: "color (mk_rbt t) = Black"
+  sorry
+
+text \<open>
+  \subsection*{Medium Complex Parts}
+
+  Show that the black-height of the returned tree is the minimum height of the argument tree
+\<close>
+
+lemma mk_rbt_bheight: "balanced t \<Longrightarrow> bheight (mk_rbt t) = min_height t"
+text \<open>Hint: Use Isar to have better control when to unfold with @{thm [source] balanced_alt},
+  and when to use @{thm [source] balanced_subt} (e.g. to discharge the premises of the IH)
+\<close>
+  sorry
+
+text \<open>
+  Show that the returned tree satisfies the height invariant.
+\<close>
+
+lemma mk_rbt_invh: "balanced t \<Longrightarrow> invh (mk_rbt t)"
+  sorry
+
+text \<open>
+  \subsection*{The Hard Part (3 Bonus Points)}
+
+  For {\bf three bonus points}, show that the returned tree satisfies the color invariant.
+
+  Warning: This requires careful case splitting, via a clever combination of
+    automation and manual proof (Isar, aux-lemmas), in order to deal with the
+    multiple cases without a combinatorial explosion of the proofs.
+\<close>
+
+lemma mk_rbt_invc: "balanced t \<Longrightarrow> invc (mk_rbt t)"
+  sorry
+
+
+(* Now you can combine everything, to show that you are, indeed, generating an RBT *)
+theorem mk_rbt_is_rbt: "balanced t \<Longrightarrow> rbt (mk_rbt t)"
+  using mk_rbt_invh mk_rbt_invc mk_rbt_color unfolding rbt_def by auto
+
+
+
+text \<open>\NumHomework{Linear-Time Repainting}{15.~6.~2018}
+
+  Write a linear-time version of \<open>mk_rbt\<close>, and show that it behaves like
+  \<open>mk_rbt\<close>.
+
+  Idea: Compute the min-height during the same recursion as you build
+    the tree.
+
+  Note: No formal complexity proof required.
+\<close>
+
+fun mk_rbt' :: "('a,unit) tree \<Rightarrow> 'a rbt \<times> nat" -- \<open>Returns the RBT and the min-height of the argument\<close>
+where
+  "mk_rbt' _ = undefined"
+
+lemma mk_rbt'_refine_aux: "mk_rbt' t = (mk_rbt t, min_height t)"
+  sorry
+
+
+lemma mk_rbt'_refine: "fst (mk_rbt' t) = mk_rbt t"
+  sorry
+
+
+
+(*<*)
+end
+(*>*)
Binary file SS18/Exercises/ex10.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/Trie1.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,168 @@
+(* Author: Tobias Nipkow *)
+
+section "Trie1"
+
+theory Trie1
+imports Main
+begin
+
+lemma [simp]: "(\<forall>x. x \<noteq> y) = False"
+by blast
+
+hide_const (open) insert
+
+declare Let_def[simp]
+
+
+subsection "Trie"
+
+datatype trie = Leaf | Node bool "trie * trie"
+
+fun isin :: "trie \<Rightarrow> bool list \<Rightarrow> bool" where
+"isin Leaf ks = False" |
+"isin (Node b (l,r)) ks =
+   (case ks of
+      [] \<Rightarrow> b |
+      k#ks \<Rightarrow> isin (if k then r else l) ks)"
+
+fun insert :: "bool list \<Rightarrow> trie \<Rightarrow> trie" where
+"insert [] Leaf = Node True (Leaf,Leaf)" |
+"insert [] (Node b lr) = Node True lr" |
+"insert (k#ks) Leaf =
+  Node False (if k then (Leaf, insert ks Leaf)
+                   else (insert ks Leaf, Leaf))" |
+"insert (k#ks) (Node b (l,r)) =
+  Node b (if k then (l, insert ks r)
+               else (insert ks l, r))"
+
+lemma isin_insert: "isin (insert as t) bs = (as = bs \<or> isin t bs)"
+apply(induction as t arbitrary: bs rule: insert.induct)
+apply (auto split: list.splits)
+done
+
+text \<open>A simple implementation of delete; does not shrink the trie!\<close>
+
+fun delete :: "bool list \<Rightarrow> trie \<Rightarrow> trie" where
+"delete ks Leaf = Leaf" |
+"delete ks (Node b (l,r)) =
+   (case ks of
+      [] \<Rightarrow> Node False (l,r) |
+      k#ks' \<Rightarrow> Node b (if k then (l, delete ks' r) else (delete ks' l, r)))"
+
+lemma "isin (delete as t) bs = (as \<noteq> bs \<and> isin t bs)"
+apply(induction as t arbitrary: bs rule: delete.induct)
+apply (auto split: list.splits)
+done
+
+fun node :: "bool \<Rightarrow> trie * trie \<Rightarrow> trie" where
+"node b lr = (if \<not> b \<and> lr = (Leaf,Leaf) then Leaf else Node b lr)"
+
+fun delete2 :: "bool list \<Rightarrow> trie \<Rightarrow> trie" where
+"delete2 ks Leaf = Leaf" |
+"delete2 ks (Node b (l,r)) =
+   (case ks of
+      [] \<Rightarrow> node False (l,r) |
+      k#ks' \<Rightarrow> node b (if k then (l, delete2 ks' r) else (delete2 ks' l, r)))"
+
+lemma "isin (delete2 as t) bs = isin (delete as t) bs"
+apply(induction as t arbitrary: bs rule: delete2.induct)
+ apply simp
+apply (force split: list.splits)
+done
+
+
+subsection "Patricia Trie"
+
+datatype ptrie = LeafP | NodeP "bool list" bool "ptrie * ptrie"
+
+fun isinP :: "ptrie \<Rightarrow> bool list \<Rightarrow> bool" where
+"isinP LeafP ks = False" |
+"isinP (NodeP ps b (l,r)) ks =
+  (let n = length ps in
+   if ps = take n ks
+   then case drop n ks of [] \<Rightarrow> b | k#ks' \<Rightarrow> isinP (if k then r else l) ks'
+   else False)"
+
+fun split where
+"split [] ys = ([],[],ys)" |
+"split xs [] = ([],xs,[])" |
+"split (x#xs) (y#ys) =
+  (if x\<noteq>y then ([],x#xs,y#ys)
+   else let (ps,xs',ys') = split xs ys in (x#ps,xs',ys'))"
+
+fun insertP :: "bool list \<Rightarrow> ptrie \<Rightarrow> ptrie" where
+"insertP ks LeafP  = NodeP ks True (LeafP,LeafP)" |
+"insertP ks (NodeP ps b (l,r)) =
+  (case split ks ps of
+     (qs,k#ks',p#ps') \<Rightarrow>
+       let tp = NodeP ps' b (l,r); tk = NodeP ks' True (LeafP,LeafP) in
+       NodeP qs False (if k then (tp,tk) else (tk,tp)) |
+     (qs,k#ks',[]) \<Rightarrow>
+       NodeP ps b (if k then (l, insertP ks' r) else (insertP ks' l, r)) |
+     (qs,[],p#ps') \<Rightarrow>
+       let t = NodeP ps' b (l,r) in
+       NodeP qs True (if p then (LeafP,t) else (t,LeafP)) |
+     (qs,[],[]) \<Rightarrow> NodeP ps True (l,r))"
+
+fun prefix_trie :: "bool list \<Rightarrow> trie \<Rightarrow> trie" where
+"prefix_trie [] t = t" |
+"prefix_trie (k#ks) t =
+  (let t' = prefix_trie ks t in Node False (if k then (Leaf,t') else (t',Leaf)))"
+
+fun abs_ptrie :: "ptrie \<Rightarrow> trie" where
+"abs_ptrie LeafP = Leaf" |
+"abs_ptrie (NodeP ps b (l,r)) = prefix_trie ps (Node b (abs_ptrie l, abs_ptrie r))"
+
+lemma isin_prefix_trie: "isin (prefix_trie ps t) ks =
+ (length ks \<ge> length ps \<and>
+  (let n = length ps in ps = take n ks \<and> isin t (drop n ks)))"
+apply(induction ps arbitrary: ks)
+apply(auto split: list.split)
+done
+
+lemma isinP: "isinP t ks = isin (abs_ptrie t) ks"
+apply(induction t arbitrary: ks rule: abs_ptrie.induct)
+ apply(auto simp: isin_prefix_trie split: list.split)
+ using nat_le_linear apply force
+using nat_le_linear apply force
+done
+
+lemma prefix_trie_Leafs: "prefix_trie ks (Node True (Leaf,Leaf)) = insert ks Leaf"
+apply(induction ks)
+apply auto
+done
+
+lemma insert_prefix_trie_same:
+  "insert ps (prefix_trie ps (Node b lr)) = prefix_trie ps (Node True lr)"
+apply(induction ps)
+apply auto
+done
+
+lemma insert_append: "insert (ks @ k # ks') (prefix_trie ks (Node b (t1,t2))) =
+  prefix_trie ks (Node b (if k then (t1, insert ks' t2) else (insert ks' t1, t2)))"
+apply(induction ks)
+apply auto
+done
+
+lemma prefix_trie_append: "prefix_trie (ps @ qs) t = prefix_trie ps (prefix_trie qs t)"
+apply(induction ps)
+apply auto
+done
+
+lemma split_if: "split ks ps = (qs, ks', ps') \<Longrightarrow>
+  ks = qs @ ks' \<and> ps = qs @ ps' \<and> (ks' \<noteq> [] \<and> ps' \<noteq> [] \<longrightarrow> hd ks' \<noteq> hd ps')"
+apply(induction ks ps arbitrary: qs ks' ps' rule: split.induct)
+apply(auto split: prod.splits if_splits)
+done
+
+lemma abs_ptrie_insertP:
+  "abs_ptrie (insertP ks t) = insert ks (abs_ptrie t)"
+apply(induction t arbitrary: ks)
+apply(auto simp: prefix_trie_Leafs insert_prefix_trie_same insert_append prefix_trie_append
+           dest!: split_if split: list.split prod.split)
+done
+
+corollary isinP_insertP: "isinP (insertP ks t) ks' = (ks=ks' \<or> isinP t ks')"
+by (simp add: isin_insert isinP abs_ptrie_insertP)
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/Trie_Enum.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,36 @@
+theory Trie_Enum
+imports Trie1 "HOL-Library.List_lexord"
+begin
+
+  fun enum where
+    "enum Leaf = []"
+  | "enum (Node b (l,r)) =
+      (if b then [[]] else []) @ map (op # False) (enum l) @ map (op # True) (enum r)"
+
+
+  term "(a::bool list) \<le> b"
+
+
+  lemma "set (enum t) = { xs. isin t xs }"
+    apply (induction t rule: enum.induct)
+    apply (auto split!: list.splits simp: image_iff neq_Nil_conv)
+    apply (metis (full_types))
+    apply (metis (full_types))
+    by (metis (full_types) neq_Nil_conv)
+
+  lemma sorted_wrt_map_Cons: "sorted_wrt op< (map (op# (x::_::linorder)) l) \<longleftrightarrow> sorted_wrt op< l"
+    apply (induction l)
+    apply (auto simp: sorted_wrt_Cons)
+    done
+
+  lemma "sorted_wrt op< (enum t)"
+    apply (induction t rule: enum.induct)
+    apply (auto simp: sorted_wrt_Cons sorted_wrt_append sorted_wrt_map_Cons)
+    done
+
+
+
+
+
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/document/build	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+${ISABELLE_TOOL} latex -o sty root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+${ISABELLE_TOOL} latex -o pdf root.tex && \
+cp root.pdf ../../../$2.pdf
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/document/exercise.sty	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,51 @@
+
+\newcommand{\Lecture}{Functional Data Structures}
+\newcommand{\Semester}{SS 2018}
+\newcommand{\Prof}{Prof.~Tobias~Nipkow,~Ph.D.}
+\newcommand{\Tutor}{Dr. Peter Lammich}
+
+\newcounter{sheet}
+\newcounter{homework}
+
+\newlength{\abslength}\setlength{\abslength}{2mm plus 1mm minus 1mm}
+\newcommand{\abs}{\par\vspace{\abslength}}
+
+\newlength{\TUMBr}\settowidth{\TUMBr}{{\bf Technische Universit{\"a}t M{\"u}nchen}}
+\newcommand{\Header}[5]{{\bf
+ \makebox[\TUMBr]{Technische Universit{\"a}t M{\"u}nchen} \hfill #3\\
+ \makebox[\TUMBr]{Institut f{\"u}r Informatik} \hfill #4\\
+ \makebox[\TUMBr]{#1} \hfill #5\\
+ \makebox[\TUMBr]{#2}}\abs}
+
+\newcommand{\Title}[1]{%
+  \begin{center}{\LARGE\bf\Lecture}\\[1ex]{\bf Exercise Sheet #1}\end{center}}
+
+\newcommand{\ExerciseSheet}[2]{%
+  \pagestyle{empty}%
+  \setcounter{sheet}{#1}%
+  \vspace*{-2cm}\Header{\Prof}{\Tutor}{\Semester}{#2}{}\vspace*{1cm}%
+  \Title{#1}\abs}
+
+\newcounter{exercise}
+\newcommand{\Exercise}[1]{%
+  \refstepcounter{exercise}%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Exercise \arabic{sheet}.\arabic{exercise}\ \ \normalfont\sffamily #1}}}
+
+\newcommand{\Homework}[2]{%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Homework \arabic{sheet}\ \ \normalfont\sffamily #1}}%
+  \emph{Submission until Friday, #2, 11:59am.}}
+
+\newcommand{\NumHomework}[2]{%
+  \refstepcounter{homework}%
+  \pagebreak[3]%
+  \relax%
+  \vspace{0.8em}%
+  \subsection*{{Homework \arabic{sheet}.\arabic{homework}\ \ \normalfont\sffamily #1}}%
+  \emph{Submission until Friday, #2, 11:59am.}}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/document/root.tex	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,66 @@
+\documentclass[11pt,a4paper]{scrartcl}
+\usepackage{isabelle,isabellesym}
+\usepackage{exercise}
+\usepackage{amsmath}
+
+% further packages required for unusual symbols (see also
+% isabellesym.sty), use only when needed
+
+\usepackage{amssymb}
+  %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>,
+  %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>,
+  %\<triangleq>, \<yen>, \<lozenge>
+
+%\usepackage[greek,english]{babel}
+  %option greek for \<euro>
+  %option english (default language) for \<guillemotleft>, \<guillemotright>
+
+\usepackage[latin1]{inputenc}
+  %for \<onesuperior>, \<onequarter>, \<twosuperior>, \<onehalf>,
+  %\<threesuperior>, \<threequarters>, \<degree>
+
+\usepackage[only,bigsqcap]{stmaryrd}
+  %for \<Sqinter>
+
+%\usepackage{eufrak}
+  %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)
+
+%\usepackage{textcomp}
+  %for \<cent>, \<currency>
+
+% this should be the last package used
+\usepackage{pdfsetup}
+
+% urls in roman style, theory text in math-similar italics
+\urlstyle{rm}
+\isabellestyle{it}
+
+% for uniform font size
+%\renewcommand{\isastyle}{\isastyleminor}
+
+\begin{document}
+
+% sane default for proof documents
+\parindent 0pt\parskip 0.5ex
+
+
+\renewcommand{\isachardoublequote}{`\"}
+\renewcommand{\isachardoublequoteopen}{``}
+\renewcommand{\isachardoublequoteclose}{''}
+\renewcommand{\isacharunderscore}{\_}
+\renewcommand{\isacharunderscorekeyword}{\_}
+
+
+% generated text of all theories
+\input{session}
+
+% optional bibliography
+%\bibliographystyle{abbrv}
+%\bibliography{root}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/ex10.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,177 @@
+(*<*)
+theory ex10
+imports "HOL-Data_Structures.Tree23_Map"
+begin
+(*>*)
+(*<*)
+  hide_const (open) Tree23.Leaf
+(*>*)
+
+text {* \ExerciseSheet{10}{15.~6.~2018} *}
+
+text \<open>\Exercise{Tries with 2-3-trees}
+
+  In this exercise, you shall develop a trie data structure for keys of
+  type @{typ "'a list"} (instead of @{typ "bool list"}).
+
+  Thus, a node needs to store a map from \<open>'a\<close> to the next trie.
+
+  In a first step, we encode the map as @{typ \<open>'a \<Rightarrow> 'b option\<close>}
+\<close>
+
+  datatype 'a trie = Leaf | Node bool "'a \<rightharpoonup> 'a trie"
+
+text \<open>Define and prove correct membership, insertion and deletion (without shrinking the trie).\<close>
+
+  fun isin :: "'a trie \<Rightarrow> 'a list \<Rightarrow> bool"
+  (*<*)
+  where
+    "isin Leaf _ = False"
+  | "isin (Node b m) ks = (
+    case ks of [] \<Rightarrow> b
+       | k#ks \<Rightarrow> (case m k of None \<Rightarrow> False | Some t \<Rightarrow> isin t ks))"
+  (*>*)
+
+  fun ins :: "'a list \<Rightarrow> 'a trie \<Rightarrow> 'a trie"
+  (*<*)
+  where
+    "ins [] Leaf = Node True Map.empty"
+  | "ins [] (Node b m) = Node True m"
+  | "ins (k#ks) Leaf = Node False [k\<mapsto>ins ks Leaf]"
+  | "ins (k#ks) (Node b m) = Node b (case m k of None \<Rightarrow> m(k\<mapsto>ins ks Leaf) | Some t \<Rightarrow> m(k\<mapsto>ins ks t))"
+  (*>*)
+
+
+  lemma ins_correct: "isin (ins as t) bs = (as=bs \<or> isin t bs)"
+  (*<*)
+    apply (induction as t arbitrary: bs rule: ins.induct)
+    apply (auto split: list.split option.split)
+    done
+  (*>*)
+
+  fun delete :: "'a list \<Rightarrow> 'a trie \<Rightarrow> 'a trie" where
+  (*<*)
+  "delete ks Leaf = Leaf" |
+  "delete ks (Node b m) =
+     (case ks of
+        [] \<Rightarrow> Node False m |
+        k#ks' \<Rightarrow> Node b (case m k of None \<Rightarrow> m | Some t \<Rightarrow> m(k\<mapsto>delete ks' t)))"
+  (*>*)
+
+  lemma delete_correct: "isin (delete as t) bs = (as \<noteq> bs \<and> isin t bs)"
+  (*<*)
+    apply(induction as t arbitrary: bs rule: delete.induct)
+    apply (auto split: list.splits option.split)
+    done
+  (*>*)
+
+text \<open>Now refine the trie data structure to use 2-3-trees for the map.
+  Note: To make the provided interface more usable, we introduce
+  some abbreviations here:
+\<close>
+
+abbreviation "empty23 \<equiv> Tree23.Leaf"
+abbreviation "inv23 t \<equiv> bal t \<and> sorted1 (inorder t)"
+
+lemmas map23_thms[simp] = map_empty map_update map_delete
+    invar_empty invar_update invar_delete
+
+text \<open>The refined trie datatype\<close>
+datatype 'a trie' = Leaf' | Node' bool "('a\<times>'a trie') tree23"
+
+(*<*)
+text \<open>Lemma required for the termination prover of the function package: \<close>
+lemma lookup_size_aux[simp]: "lookup m k = Some v \<Longrightarrow> size (v::'a trie') < Suc (size_tree23 (\<lambda>x. Suc (size (snd x))) m)"
+  apply (induction m k rule: lookup.induct)
+  apply (auto split: if_splits)
+  done
+(*>*)
+
+text \<open>Define an invariant for trie' and an abstraction function to trie.
+  Then define membership, insertion, and deletion, and show that they behave
+  correctly wrt. the abstract trie'. Finally, combine the correctness lemmas
+  to get a set interface based on 2-3-tree tries.
+\<close>
+
+fun trie'_inv :: "'a::linorder trie' \<Rightarrow> bool"
+(*<*)
+where
+  "trie'_inv Leaf' \<longleftrightarrow> True"
+| "trie'_inv (Node' b m) \<longleftrightarrow> inv23 m \<and> (\<forall>k t. lookup m k = Some t \<longrightarrow> trie'_inv t)"
+(*>*)
+
+fun trie'_\<alpha> :: "'a::linorder trie' \<Rightarrow> 'a trie"
+(*<*)
+where
+  "trie'_\<alpha> Leaf' = Leaf"
+| "trie'_\<alpha> (Node' b m) = Node b (map_option trie'_\<alpha> o lookup m)"
+(*>*)
+
+
+
+fun isin' :: "'a::linorder trie' \<Rightarrow> 'a list \<Rightarrow> bool"
+(*<*)
+where
+  "isin' Leaf' _ = False"
+| "isin' (Node' b m) ks = (
+  case ks of [] \<Rightarrow> b
+     | k#ks \<Rightarrow> (case lookup m k of None \<Rightarrow> False | Some t \<Rightarrow> isin' t ks))"
+(*>*)
+
+(*<*)
+lemma isin'_refine: "trie'_inv t \<Longrightarrow> isin' t ks \<longleftrightarrow> isin (trie'_\<alpha> t) ks"
+  apply (induction t ks rule: isin'.induct)
+  apply (auto split: list.splits option.splits)
+  done
+(*>*)
+
+fun ins' :: "'a::linorder list \<Rightarrow> 'a trie' \<Rightarrow> 'a trie'"
+(*<*)
+where
+  "ins' [] Leaf' = Node' True empty23"
+| "ins' [] (Node' b m) = Node' True m"
+| "ins' (k#ks) Leaf' = Node' False (update k (ins' ks Leaf') empty23)"
+| "ins' (k#ks) (Node' b m) = Node' b (
+      case lookup m k of None \<Rightarrow> update k (ins' ks Leaf') m | Some t \<Rightarrow> update k (ins' ks t) m)"
+(*>*)
+
+(*<*)
+lemma ins'_refine: "trie'_inv t \<Longrightarrow> trie'_\<alpha> (ins' ks t) = ins ks (trie'_\<alpha> t) \<and> trie'_inv (ins' ks t)"
+  apply (induction ks t rule: ins'.induct)
+  apply (auto split: option.split)
+  done
+(*>*)
+
+fun delete' :: "'a::linorder list \<Rightarrow> 'a trie' \<Rightarrow> 'a trie'"
+(*<*)
+where
+"delete' ks Leaf' = Leaf'" |
+"delete' ks (Node' b m) =
+   (case ks of
+      [] \<Rightarrow> Node' False m |
+      k#ks' \<Rightarrow> Node' b (
+        case lookup m k of None \<Rightarrow> m
+      | Some t \<Rightarrow> update k (delete' ks' t) m))"
+(*>*)
+
+(*<*)
+lemma delete'_refine: "trie'_inv t \<Longrightarrow> trie'_\<alpha> (delete' ks t) = delete ks (trie'_\<alpha> t) \<and> trie'_inv (delete' ks t)"
+  apply (induction ks t rule: delete'.induct)
+  apply (auto split: option.split list.split)
+  done
+(*>*)
+
+
+lemma ins'_correct: "trie'_inv t \<Longrightarrow> (isin' (ins' xs t) ks \<longleftrightarrow> xs=ks \<or> isin' t ks) \<and> trie'_inv (ins' xs t)"
+(*<*)
+  by (simp add: isin'_refine ins'_refine ins_correct)
+(*>*)
+
+lemma delete'_correct: "trie'_inv t \<Longrightarrow> (isin' (delete' xs t) ks \<longleftrightarrow> xs\<noteq>ks \<and> isin' t ks) \<and> trie'_inv (delete' xs t)"
+(*<*)
+  by (simp add: isin'_refine delete'_refine delete_correct)
+(*>*)
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/ex10_2.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,32 @@
+(*<*)
+theory ex10_2
+  imports "Trie1"
+begin
+(*>*)
+
+text \<open>\Exercise{Union Function on Tries}
+  Define a function to merge two tries and show its correctness
+\<close>
+fun union :: "trie \<Rightarrow> trie \<Rightarrow> trie"
+(*<*)
+  where
+  "union Leaf t = t"
+| "union t Leaf = t"
+| "union (Node v (l,r)) (Node v' (l',r')) = (
+    Node (v \<or> v') (union l l', union r r'))"
+(*>*)
+
+(*<*)
+lemma [simp]: "union t Leaf = t" by (cases t) auto
+(*>*)
+
+lemma "isin (union a b) x = isin a x \<or> isin b x"
+(*<*)
+  apply (induction a b arbitrary: x rule: union.induct)
+  apply (auto split: list.split)
+  done
+(*>*)
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/hw10_1.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,169 @@
+(*<*)
+theory hw10_1
+imports Main
+begin
+(*>*)
+
+
+text \<open>\NumHomework{Tries with Same-Length Keys}{22.~6.~2018}
+
+  Consider the following trie datatype:
+\<close>
+
+datatype trie = LeafF | LeafT | Node "trie * trie"
+
+text \<open>It is meant to store keys of the same length only.
+  Thus, the @{const Node} constructor stores inner nodes, and there are two
+  types of leaves, @{const LeafF} if this path is not in the set,
+  and @{const LeafT} if it is in the set.
+
+  Define an invariant \<open>is_trie N t\<close> that states that all keys in \<open>t\<close>
+  have length \<open>N\<close>, and that there are no superfluous nodes, i.e.,
+  no nodes of the form @{term \<open>Node (LeafF, LeafF)\<close>}.
+\<close>
+
+fun is_trie :: "nat \<Rightarrow> trie \<Rightarrow> bool"
+(*<*)
+where
+  "is_trie _ LeafF \<longleftrightarrow> True"
+| "is_trie 0 LeafT \<longleftrightarrow> True"
+| "is_trie (Suc n) (Node (l,r)) \<longleftrightarrow> (l,r)\<noteq>(LeafF,LeafF) \<and> is_trie n l \<and> is_trie n r"
+| "is_trie _ _ \<longleftrightarrow> False"
+(*>*)
+
+text \<open>Hint: The following should evaluate to true!\<close>
+value "is_trie 42 LeafF"
+value "is_trie 2 (Node (LeafF,Node (LeafT,LeafF)))"
+text \<open>Whereas these should be false\<close>
+value "is_trie 42 LeafT" -- \<open>Wrong key length\<close>
+value "is_trie 2 (Node (LeafT,Node (LeafT,LeafF)))" -- \<open>Wrong key length\<close>
+value "is_trie 1 (Node (LeafT,Node (LeafF,LeafF)))" -- \<open>Superfluous node\<close>
+
+
+text \<open>Define membership, insert, and delete functions, and prove them correct! \<close>
+
+fun isin :: "trie \<Rightarrow> bool list \<Rightarrow> bool"
+(*<*)
+where
+"isin LeafF ks = False" |
+"isin LeafT ks = (ks=[])" |
+"isin (Node (l,r)) ks =
+   (case ks of
+      [] \<Rightarrow> False |
+      k#ks \<Rightarrow> isin (if k then r else l) ks)"
+(*>*)
+
+fun ins :: "bool list \<Rightarrow> trie \<Rightarrow> trie"
+(*<*)
+where
+"ins [] LeafF = LeafT" |
+"ins [] LeafT = LeafT" |
+"ins [] (Node lr) = undefined" |
+"ins (k#ks) LeafT = undefined" |
+"ins (k#ks) LeafF =
+  Node (if k then (LeafF, ins ks LeafF)
+                   else (ins ks LeafF, LeafF))" |
+"ins (k#ks) (Node (l,r)) =
+  Node (if k then (l, ins ks r)
+               else (ins ks l, r))"
+(*>*)
+
+(*<*)
+lemma is_trie_invert:
+  "is_trie n LeafF"
+  "is_trie n LeafT \<longleftrightarrow> n=0"
+  "is_trie n (Node (l,r)) \<longleftrightarrow> (l,r)\<noteq>(LeafF,LeafF) \<and> (\<exists>n'. n=Suc n' \<and> is_trie n' l \<and> is_trie n' r)"
+  by (cases n; auto)+
+
+
+lemma is_trie_invert2:
+  "is_trie 0 t \<longleftrightarrow> t=LeafF \<or> t=LeafT"
+  by (cases t) auto
+
+
+lemma [simp]: "ins ks LeafF \<noteq> LeafF" by (cases ks) auto
+
+lemma [simp]: "is_trie (length ks) t \<Longrightarrow> ins ks t \<noteq> LeafF"
+  apply (cases "(ks,t)" rule: ins.cases)
+  by auto
+
+
+(*>*)
+
+lemma isin_ins:
+  assumes "is_trie n t" and "length as = n"
+  shows "isin (ins as t) bs = (as = bs \<or> isin t bs)"
+    and "is_trie n (ins as t)"
+(*<*)
+text \<open>Note: @{const isin} is used as abstraction function
+  here: @{term_type "isin t"} abstracts a trie to the characteristic function
+  of the set represented by the trie.\<close>
+  using assms
+  apply(induction as t arbitrary: bs n rule: ins.induct)
+  apply (auto split: list.splits)
+  done
+(*>*)
+
+
+(*<*)
+definition node :: "trie * trie \<Rightarrow> trie" where
+  "node lr = (
+    case lr of
+      (LeafF,LeafF) \<Rightarrow> LeafF
+    | _ \<Rightarrow> Node lr)"
+
+(*>*)
+
+fun delete2 :: "bool list \<Rightarrow> trie \<Rightarrow> trie" where
+(*<*)
+"delete2 [] LeafT = LeafF" |
+"delete2 _ LeafT = LeafT" |
+"delete2 _ LeafF = LeafF" |
+"delete2 [] (Node lr) = Node lr" |
+"delete2 (k#ks) (Node (l,r)) =
+     (if k then node (l,delete2 ks r)
+      else node (delete2 ks l, r))"
+(*>*)
+
+(*<*)
+
+lemma [simp]: "isin (node lr) xs \<longleftrightarrow> isin (Node lr) xs"
+  by (auto simp: node_def split: prod.split trie.splits list.split)
+
+lemma [simp]: "is_trie n (Node lr) \<Longrightarrow> is_trie n (node lr)"
+  by (auto simp: node_def split: prod.split trie.splits list.split)
+
+
+lemma [simp]: "delete2 ks LeafT = (case ks of [] \<Rightarrow> LeafF | _ \<Rightarrow> LeafT)"
+  by (cases ks) auto
+
+lemma [simp]: "is_trie (Suc n) (node (l,r)) \<longleftrightarrow> is_trie n l \<and> is_trie n r"
+  by (auto simp: node_def split: prod.split trie.splits)
+
+(*>*)
+
+lemma
+  assumes "is_trie n t"
+  shows "isin (delete2 as t) bs = (as\<noteq>bs \<and> isin t bs)"
+    and "(is_trie n (delete2 as t))"
+(*<*)
+  using assms
+  apply(induction as t arbitrary: bs n rule: delete2.induct)
+  apply (auto split!: list.splits simp: is_trie_invert is_trie_invert2 split!: trie.splits if_splits)
+  done
+(*>*)
+
+
+text \<open>Hints:
+  \<^item> Like in the \<open>delete2\<close> function for standard tries, you may want to define
+    a "smart-constructor" \<open>node :: trie \<times> trie \<Rightarrow> trie\<close> for nodes,
+    that constructs a node and handles the case that both successors are \<open>LeafF\<close>.
+  \<^item> Consider proving auxiliary lemmas about the smart-constructor, instead of
+    always unfolding it with the simplifier.
+\<close>
+
+
+
+(*<*)
+end
+(*>*)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/ex10/hw10_2.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,60 @@
+(*<*)
+theory hw10_2
+imports Trie1 "HOL-Library.List_lexord"
+begin
+(*>*)
+
+text \<open>\NumHomework{Enumeration of Keys in Tries}{22.~6.~2018}
+
+  Write a function that enumerates all keys in a trie, in lexicographic order!
+  Prove it correct.
+\<close>
+
+
+  fun enum :: "trie \<Rightarrow> bool list list"
+  (*<*)
+  where
+    "enum Leaf = []"
+  | "enum (Node b (l,r)) =
+      (if b then [[]] else []) @ map (op # False) (enum l) @ map (op # True) (enum r)"
+  (*>*)
+
+(*<*)
+
+  lemma enum_set: "set (enum t) = { xs. isin t xs }"
+    apply (induction t rule: enum.induct)
+    apply (auto split!: list.splits simp: image_iff neq_Nil_conv)
+    apply (metis (full_types))
+    apply (metis (full_types))
+    by (metis (full_types) neq_Nil_conv)
+
+  lemma sorted_wrt_map_Cons: "sorted_wrt op< (map (op# (x::_::linorder)) l) \<longleftrightarrow> sorted_wrt op< l"
+    apply (induction l)
+    apply (auto simp: sorted_wrt_Cons)
+    done
+
+  lemma enum_sorted: "sorted_wrt op< (enum t)"
+    apply (induction t rule: enum.induct)
+    apply (auto simp: sorted_wrt_Cons sorted_wrt_append sorted_wrt_map_Cons)
+    done
+(*>*)
+
+  lemma enum_correct:
+    "set (enum t) = { xs. isin t xs }" and "sorted_wrt op< (enum t)"
+  (*<*)
+    using enum_set enum_sorted by auto
+  (*>*)
+
+text \<open>
+  Note that Booleans are ordered by \<open>False < True\<close>, and
+  that we imported @{theory "List_lexord"}, which defines
+  a lexicographic ordering on lists, if the elements are ordered.
+\<close>
+
+value "[True,True,False] < [True,True,True,True]"
+
+
+
+(*<*)
+end
+(*>*)
--- a/SS18/Exercises/hwsubm/email.log	Fri Jun 01 10:20:03 2018 +0200
+++ b/SS18/Exercises/hwsubm/email.log	Wed Jun 13 11:16:59 2018 +0200
@@ -253,3 +253,114 @@
 Di 29. Mai 12:10:16 CEST 2018
 /home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw06 ge72lic@mytum.de ex06.thy
 OK
+Do 7. Jun 11:11:38 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 sabine.rieder@tum.de tmpl07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 max.kirchmeier@tum.de tmpl07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 ga59zew@mytum.de hw07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 ge72lic@mytum.de ex07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 martin.rau@tum.de Home07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 florian.stamer@tum.de ex07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 s.griebel@tum.de homework07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 ga53qud@mytum.de hw07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 ge69kel@mytum.de Homework07.thy
+OK
+Do 7. Jun 11:11:39 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 daniel.kutasi@mytum.de hw07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 j.gottfriedsen@tum.de homework07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 eric.koepke@tum.de ex07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 a.putwattana@tum.de hw07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 mitja.krebs@tum.de tmpl07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 ga96koz@mytum.de hw07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 katharinaluise.schmitt@tum.de ex07_v2.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 felix.wielander@tum.de tmpl07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 nick.smith@tum.de HW07.thy
+OK
+Do 7. Jun 11:11:40 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw07 clemens.jonischkeit@tum.de jonischkeit07.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 sabine.rieder@tum.de ex08tmpl.thy hw08bonustmpl.thy hw08tmpl.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 martin.rau@tum.de Home08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 a.putwattana@tum.de hw08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 daniel.kutasi@mytum.de hw08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 nick.smith@tum.de HW08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 ge72lic@mytum.de ex08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 florian.stamer@tum.de ex08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 felix.wielander@tum.de hw08tmpl.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 mitja.krebs@tum.de ex08tmpl.thy hw08bonustmpl.thy hw08tmpl.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 ga53qud@mytum.de hw08.thy
+OK
+Mi 13. Jun 10:33:16 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 ge69kel@mytum.de Homework08.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 j.gottfriedsen@tum.de hw08tmpl.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 clemens.jonischkeit@tum.de jonischkeit08.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 eric.koepke@tum.de hw08.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 s.griebel@tum.de homework08.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 ga96koz@mytum.de hw08tmpl.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 katharinaluise.schmitt@tum.de ex08.thy
+OK
+Mi 13. Jun 10:33:17 CEST 2018
+/home/lammich/lehre/FDS/Private/SS18/Exercises/hwsubm/_sendmail.py PASSWORD hw08 ga59zew@mytum.de hw08tmpl.thy
+OK
--- a/SS18/Exercises/hwsubm/hw01/extracted/a.kutafina@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-From a.kutafina@tum.de Fri Apr 20 11:59:31 2018
-Return-Path: <a.kutafina@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- QY2gDue52Vq0BQAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 11:59:31 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id D8DC11C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 11:59:31 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id CDBA11E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 11:59:31
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- CADF61C0376; Fri, 20 Apr 2018 11:59:31 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id C84B51C038A; Fri, 20 Apr 2018 11:59:31 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id A5F681C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 11:59:31 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 9B90A1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 11:59:31 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 9A4B41C24B4; Fri, 20 Apr 2018 11:59:31 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id E5EAE1C24B8
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 11:59:28 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id DADF31C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 11:59:28 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40SBCh5wQqzyZj; Fri, 20 Apr
- 2018 11:59:28 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- content-language:content-type:content-type:mime-version
- :user-agent:date:date:message-id:subject:subject:from:from
- :received:received; s=postout; t=1524218368; bh=0qI6x07+47mu5jPl
- NeYrlZgJOd86voY+EN8BoMMFAbw=; b=g4eZHE53YScUIurfyE9EvMMhkbqsnpUy
- RSu/kn2Ci5yQB2rMLkYD4b/yBf37WN97bxMWyVusAuJ4QSxREMRT/mCZaXBl51Et
- 8ETvs1sC/hdf2XQasXFGU+K+dyStf+ir17sDYb8gAT4ajG8DT1YS7G5TLCUy02PA
- QyaS0cjB2xcuAMTrJMaZcnoY79Hg8vPyBi4k8AsXyfEKUslxG3O+wJJEpdRJ71Dt
- mV6hXI/nZD8Ba2uUP/GiSYEbGTuYjy5XkPFvhVCqfm0K567bQiubVR64BK/8wVrv
- 7shfglsXOiXBwhZnhhSPW+BUKhN7aEahEQPQLKsgZOri2aO6MRNFJw==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- z5cmDwx2nn9l; Fri, 20 Apr 2018 11:59:28 +0200 (CEST)
-Received: from [131.159.205.196] (w205-5g-v4.eduroam.dynamic.rbg.tum.de
- [131.159.205.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384
- (256/256 bits)) (No client certificate requested) by postout1.mail.lrz.de
- (Postfix) with ESMTPSA id 40SBCh1xm8zybj; Fri, 20 Apr 2018 11:59:28 +0200
- (CEST)
-To: lammich@in.tum.de, peter.lammich@tum.de
-From: Anastassiya Kutafina <a.kutafina@tum.de>
-Subject: [DPS-Homework]
-Message-ID: <0bedb9d3-68b7-e03f-16f9-802c1c1175fa@tum.de>
-Date: Fri, 20 Apr 2018 11:59:27 +0200
-User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
- Thunderbird/52.7.0
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="------------B2E45BE1EC80189DA59AA889"
-Content-Language: de-DE
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-This is a multi-part message in MIME format.
---------------B2E45BE1EC80189DA59AA889
-Content-Type: text/plain; charset=utf-8; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Dear Dr Lammich,
-
-sorry, I did not receive your email, so I tried to upload my homework at 
-nipkow3 portal. My Matrikelnummer is 03668266, if it's needed
-
-Best wishes
-Anastassiya Kutrafina
-
--- 
-Mit freundlichen Grüßen
-
-Anastassiya Kutafina
-
--- 
-Mit freundlichen Grüßen
-
-Anastassiya Kutafina
-
-
---------------B2E45BE1EC80189DA59AA889
-Content-Type: text/plain; charset=UTF-8; name="sum.thy"
-Content-Disposition: attachment; filename="sum.thy"
-Content-Transfer-Encoding: 8bit
-
-theory sum
-  imports Main
-begin
-
-
-fun listsum :: "int list \<Rightarrow> int" where
-    "listsum [] = 0"
-  | "listsum (x#xs) = x + listsum xs"
-
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x \<noteq> 0 ) l ) = listsum l"
-  apply(induction l)
-  apply(auto)
-  done
-
-
-lemma aux_listsum_rev[simp] : "listsum (xs @ [a]) = a + listsum xs"
-  apply(induction xs)
-  apply(auto)
-  done
-
-lemma listsum_rev : "listsum (rev xs) = listsum xs"
-  apply(induction xs)
-  apply(auto)
-  done 
-
-end
---------------B2E45BE1EC80189DA59AA889--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/a.putwattana@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-From a.putwattana@tum.de Thu Apr 19 21:52:39 2018
-Return-Path: <a.putwattana@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- h0pfLIfz2FqIKAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 21:52:39 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id B483A1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 21:52:39 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id B2BBC1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 21:52:39
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- B05201C0376; Thu, 19 Apr 2018 21:52:39 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id ADBF81C038A; Thu, 19 Apr 2018 21:52:39 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 86C3E1C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:39 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 7CA8C1C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:39 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 7B4271C2DAA; Thu, 19 Apr 2018 21:52:39 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id A7A301C2DA9
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:37 +0200 (CEST)
-Received: from postout2.mail.lrz.de (postout2.mail.lrz.de
- [129.187.255.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 9CA471C2D8A
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:37 +0200 (CEST)
-Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by
- postout2.mail.lrz.de (Postfix) with ESMTP id 40RqQY4Qn4z11Z3 for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:37 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- mime-version:content-type:content-type:content-language
- :accept-language:message-id:date:date:subject:subject:from:from
- :received:received:received:received; s=postout; t=1524167557;
- bh=QRUyqnlErSG2324X0o/n6MY02TYdhgo3iLC7JE0i4S0=; b=f5b9djAYNWsG
- 4i5SlnrLsGVrlfKYCSxCcrtleTs32SRj2bMjBfaTdgwX/YKNQhlsdHq6ITgUSO/O
- 2MUYFJVdgylqGtlsk8ytU9CeS+ZpgDvK7poVPXN0+C2Ck4aLI/+6PITX0YY+/nAI
- Etd0qdGtznZLp0Xk5WcHm7ixrML0eeZBq4JHyZvnuQpML0lo+82d8X1920jrVY69
- QrOyAKFawDSZkfau1s484NmttjAov2hF4sIxUDUc0gF6EYpVPKSpJAhF5G/osoD7
- QzJgbDOMbY7+6qXXnvzTB453FPB9m2T3IsMdWB+2e4t/Hi+7AbxB8CjYYIleCLud
- n33fTOSbHQ==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
-Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de
- (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- 6WbecIePe3kI for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:52:37 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (BADWLRZ-SWMBX09.ads.mwn.de
- [IPv6:2001:4ca0:0:108::165]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX09",
- Issuer "BADWLRZ-SWMBX09" (not verified)) by postout2.mail.lrz.de (Postfix)
- with ESMTPS id 40RqQY2nQCz11Z1 for <lammich@in.tum.de>; Thu, 19 Apr 2018
- 21:52:37 +0200 (CEST)
-Received: from BADWLRZ-SWMBX07.ads.mwn.de (2001:4ca0:0:108::163) by
- BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Thu, 19 Apr 2018 21:52:35 +0200
-Received: from BADWLRZ-SWMBX07.ads.mwn.de ([fe80::302d:9066:578c:4d70]) by
- BADWLRZ-SWMBX07.ads.mwn.de ([fe80::302d:9066:578c:4d70%13]) with mapi id
- 15.01.1466.003; Thu, 19 Apr 2018 21:52:36 +0200
-From: "Putwattana, Attakorn" <a.putwattana@tum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: Functional Data Structures Homework 1
-Thread-Topic: Functional Data Structures Homework 1
-Thread-Index: AQHT2BbpRNjMmNwPq0ywryeNRdkDiw==
-Date: Thu, 19 Apr 2018 19:52:36 +0000
-Message-ID: <fcfe1fe4736d4009aca3f5aed647e3ea@tum.de>
-Accept-Language: en-US
-Content-Language: en-US
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX07.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [95.157.24.186]
-Content-Type: multipart/mixed; boundary="_004_fcfe1fe4736d4009aca3f5aed647e3eatumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_fcfe1fe4736d4009aca3f5aed647e3eatumde_
-Content-Type: multipart/alternative; boundary="_000_fcfe1fe4736d4009aca3f5aed647e3eatumde_"
-
-
---_000_fcfe1fe4736d4009aca3f5aed647e3eatumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Dr. Peter Lammich,
-
-
-I could not find a way to submit the homework to submission system.  So, I attach it with this email.
-
-My matriculation number is 03693616.
-
-
-Thank you for your consideration.
-
-
-Best regards,
-
-Attakorn Putwattana
-
---_000_fcfe1fe4736d4009aca3f5aed647e3eatumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-<p>Dear Dr. Peter Lammich,</p>
-<p><br>
-</p>
-<p>I could not find a way to submit the homework to submission system.&nbsp; So, I attach it with this email.</p>
-<p>My m<span>atriculation number is 03693616.</span></p>
-<p><span><br>
-</span></p>
-<p>Thank you for your consideration.</p>
-<p><br>
-</p>
-<p>Best regards,</p>
-<p>Attakorn Putwattana</p>
-</div>
-</body>
-</html>
-
---_000_fcfe1fe4736d4009aca3f5aed647e3eatumde_--
-
---_004_fcfe1fe4736d4009aca3f5aed647e3eatumde_
-Content-Type: application/octet-stream; name="hw01.thy"
-Content-Description: hw01.thy
-Content-Disposition: attachment; filename="hw01.thy"; size=1005; creation-date="Thu, 19 Apr 2018 19:48:36 GMT"; modification-date="Thu, 19 Apr 2018 19:48:36 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGh3MDEKaW1wb3J0cyBNYWluCmJlZ2luCiAgCmZ1biBsaXN0c3VtIDo6ICJpbnQgbGlz
-dCA9PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gW10gPSAwIgp8ICJsaXN0c3VtICh4I3hzKSA9IHgg
-KyBsaXN0c3VtIHhzIgoKICB2YWx1ZSAibGlzdHN1bSBbMSwyLDNdID0gNiIKICB2YWx1ZSAibGlz
-dHN1bSBbXSA9IDAiCiAgdmFsdWUgImxpc3RzdW0gWzEsLTIsM10gPSAyIgoKbGVtbWEgbGlzdHN1
-bV9maWx0ZXJfejogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geCBcPG5vdGVxPiAwKSBs
-KSA9IGxpc3RzdW0gbCIgCiAgYXBwbHkgKGluZHVjdGlvbiBsKQogICBhcHBseSBhdXRvCiAgZG9u
-ZQoKbGVtbWEgbGlzdHN1bV9hdXhbc2ltcF06ICJsaXN0c3VtICh4cyBAIHlzKSA9IGxpc3RzdW0g
-eHMgKyBsaXN0c3VtIHlzIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgIGFwcGx5IGF1dG8KICBk
-b25lCgpsZW1tYSBsaXN0c3VtX3JldjogImxpc3RzdW0gKHJldiB4cykgPSBsaXN0c3VtIHhzIgog
-IGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgIGFwcGx5IGF1dG8KICBkb25lCgpsZW1tYSAibGlzdHN1
-bSAoZmlsdGVyIChcPGxhbWJkYT54LiBcPG5vdD4geCA8IDApIGwpIFw8Z2U+IGxpc3RzdW0gbCIK
-ICBhcHBseSAoaW5kdWN0aW9uIGwpCiAgIGFwcGx5IGF1dG8KICBkb25lCgpmdW4gZmxhdHRlbiA6
-OiAiJ2EgbGlzdCBsaXN0IFw8UmlnaHRhcnJvdz4gJ2EgbGlzdCIgd2hlcmUKICAiZmxhdHRlbiBb
-XSA9IFtdIgp8ICJmbGF0dGVuIChsICMgbHMpID0gbCBAIGZsYXR0ZW4gbHMiCgp2YWx1ZSAiZmxh
-dHRlbiBbWzEsIDIsIDNdLCBbMl1dID0gWzEsIDIsIDMsIDI6OmludF0iCnZhbHVlICJmbGF0dGVu
-IFtbMSwgMiwgM10sIFtdLCBbMl1dID0gWzEsIDIsIDMsIDI6OiBpbnRdIgoKCmxlbW1hICJsaXN0
-c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhzKSIKICBhcHBseSAoaW5k
-dWN0aW9uIHhzKQogICBhcHBseSBhdXRvCiAgZG9uZQoKZW5k
-
---_004_fcfe1fe4736d4009aca3f5aed647e3eatumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/alexejrotar@gmail.com	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-From alexejrotar@gmail.com Fri Apr 20 12:04:36 2018
-Return-Path: <alexejrotar@gmail.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- 93byBKu62VpWEgAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 12:04:36 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id AC3C01C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 12:04:36 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id A99041E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 12:04:36
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- A56CF1C038F; Fri, 20 Apr 2018 12:04:36 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id A1FB21C038B; Fri, 20 Apr 2018 12:04:36 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 7EEF41C038A for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:04:36 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 741411C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:04:36 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 72A101C2DAA; Fri, 20 Apr 2018 12:04:36 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.4 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2
- autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id C5F1C1C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:04:34 +0200 (CEST)
-Received: from mail-wr0-f175.google.com (mail-wr0-f175.google.com
- [209.85.128.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id AA8321C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:04:34 +0200 (CEST)
-Received: by mail-wr0-f175.google.com with SMTP id v24-v6so21416416wra.8
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 03:04:34 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
- s=20161025; h=message-id:subject:from:to:date:mime-version;
- bh=Y/uduS+VXpr4Ygquf2eD8Caju6fEPF4Ftf28HsgRpNM=;
- b=h+sl189cK4qIuWoC66JXcmceFxZDlbFsoZ1Q99T+upjo2QMqUJ/vxONnP0oeqtL2zP
- xA9njvB1B2J4YOSPxrQU5i1Y5JfBiMDtC47u3YVWGefk09GgnKRaBpZfssJ0nrYnDVwQ
- Nb2ILiXXft0dSMvjxVq1FaMVj7d15hWW0C3bg2WR9S6juYo3yJNIq7soqguBq8w8pBeK
- Wn6q3NJyKWXqXFTtld6/vOl3Eph64KMLZhMJApfZr8ELundApZKPCVBRUik1NOcva3dn
- YZ6fgdqksSU9JXbguCL33tSd3u499x5XlvCizdsi9T5pyXQKA9OvYxqImfKBlyLsyRoc nbkA==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
- s=20161025;
- h=x-gm-message-state:message-id:subject:from:to:date:mime-version;
- bh=Y/uduS+VXpr4Ygquf2eD8Caju6fEPF4Ftf28HsgRpNM=;
- b=mn81ZRH7D6q+6GVFMG/xy6DAEy0CLKAfKFTEsFiRXGRyW5qE3k10WVQF56PmFAo5+w
- g20EaH7ZFQChJBCCoF59TFEoVsdBkWGbIeNajLw/fycx31ddm78Sh6p7T41aW+xv7L9z
- N6/FzuwJRCZ9SvI1onVzKMLJXviyHy/KLs82eR9CYkqPAW4OyrptT50OpcZqxn2olGTP
- 4iT30T+0m9YZ5PauqDJmp7ybue8IEojIOHZMPfW0r3BrVqvjGd7iUtBSqW5pm571dmF+
- L4ZpD9xwKLy8s5Kzd30hpEaxmC/KawaP7rYNiiOGFypuPDodfWqu3kmSlobfRLxamMIr TdKQ==
-X-Gm-Message-State:
- ALQs6tD6JkKD39364sMYXKVROWms/mojha9uNPzTku2DWUC8shwj5GO6
- vtg7uP3XaVIPo5DojD0Wiynp+Le8
-X-Google-Smtp-Source:
- AIpwx4+u6Odh9kHSp0UyuWgq/voWM+wGp7w3ScZQnbIHvFKZxka8WQfkmycUE66mHjA4LX2lnE+X7Q==
-X-Received: by 2002:adf:b004:: with SMTP id
- f4-v6mr7486464wra.75.1524218674185; Fri, 20 Apr 2018 03:04:34 -0700 (PDT)
-Received: from w195-43-v4.eduroam.dynamic.rbg.tum.de
- (w195-43-v4.eduroam.dynamic.rbg.tum.de. [131.159.195.147]) by
- smtp.googlemail.com with ESMTPSA id
- q7-v6sm5034353wrf.92.2018.04.20.03.04.32 for <lammich@in.tum.de>
- (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20
- Apr 2018 03:04:33 -0700 (PDT)
-Message-ID: <1524218671.4609.2.camel@gmail.com>
-Subject: [FDS Homework] Rotar 01
-From: Alexej Rotar <alexejrotar@gmail.com>
-To: lammich@in.tum.de
-Date: Fri, 20 Apr 2018 12:04:31 +0200
-Content-Type: multipart/mixed; boundary="=-gJtuVecpztSWmXCPRu3q"
-X-Mailer: Evolution 3.26.6 (3.26.6-1.fc27) 
-Mime-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---=-gJtuVecpztSWmXCPRu3q
-Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-Hello,
-sorry for the late submission. I've just read your mail. Hope it's
-still ok.
---=-gJtuVecpztSWmXCPRu3q
-Content-Disposition: attachment; filename="hw01.thy"
-Content-Type: text/plain; name="hw01.thy"; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-theory hw01
-  imports Main
-begin
-
-fun listsum :: "int list \<Rightarrow> int" where
-"listsum [] = 0" |
-"listsum (x#xs) = x + listsum xs"
-
-value "listsum [1,2,3] = 6"
-value "listsum [] = 0"
-value "listsum [1,-2,3] = 2"
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x \<noteq> 0) xs) = listsum xs"
-  apply(induction xs)
-  apply(auto)
-  done
-
-lemma listsum_app: "listsum (xs @ ys) = listsum xs + listsum ys"
-  apply(induction xs)
-   apply(auto)
-  done
-
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-  apply(induction xs)
-   apply(auto simp: listsum_app)
-  done
-
-lemma listsum_filter_neg: "listsum (filter (op \<le> 0) xs) \<ge> listsum xs"
-  apply(induction xs)
-   apply(auto)
-  done
-
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-"flatten [] = []" |
-"flatten (x#xs) = x @ flatten xs"
-
-value "flatten [[1,2,3],[2]] = [1,2,3,2::int]"
-value "flatten [[1,2,3],[],[2]] = [1,2,3,2::int]"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-  apply(induction xs)
-   apply(auto simp: listsum_app)
-  done
-
-end
---=-gJtuVecpztSWmXCPRu3q--
-
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/daniel.kutasi@outlook.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-From daniel.kutasi@outlook.de Fri Apr 20 08:28:59 2018
-Return-Path: <daniel.kutasi@outlook.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- i15DCb+H2VpFEAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 08:28:59 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id D7C751C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 08:28:59 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id D5DC61E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 08:28:59
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- D37641C0376; Fri, 20 Apr 2018 08:28:59 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id D03DB1C038A; Fri, 20 Apr 2018 08:28:59 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id ABDF61C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 08:28:59 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id A1BE81C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 08:28:59 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id A00C01C2DAA; Fri, 20 Apr 2018 08:28:59 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.6 required=7.0
- tests=AWL,BAYES_00,FREEMAIL_FROM,
- HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS
- autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 72E931C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 08:28:54 +0200 (CEST)
-Received: from EUR02-VE1-obe.outbound.protection.outlook.com
- (mail-oln040092069024.outbound.protection.outlook.com [40.92.69.24]) (using
- TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client
- certificate requested) by vmmaildmz1.informatik.tu-muenchen.de (Postfix)
- with ESMTPS id 52B471C2D9F for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 08:28:54 +0200 (CEST)
-Received: from VE1EUR02FT060.eop-EUR02.prod.protection.outlook.com
- (10.152.12.57) by VE1EUR02HT156.eop-EUR02.prod.protection.outlook.com
- (10.152.13.155) with Microsoft SMTP Server (version=TLS1_2,
- cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.675.14; Fri, 20
- Apr 2018 06:28:53 +0000
-Received: from AM5PR1001MB0995.EURPRD10.PROD.OUTLOOK.COM (10.152.12.55) by
- VE1EUR02FT060.mail.protection.outlook.com (10.152.13.140) with Microsoft
- SMTP Server (version=TLS1_2,
- cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.675.14 via
- Frontend Transport; Fri, 20 Apr 2018 06:28:53 +0000
-Received: from AM5PR1001MB0995.EURPRD10.PROD.OUTLOOK.COM
- ([fe80::8ded:4e2a:e5d0:c0c3]) by AM5PR1001MB0995.EURPRD10.PROD.OUTLOOK.COM
- ([fe80::8ded:4e2a:e5d0:c0c3%2]) with mapi id 15.20.0696.013; Fri, 20 Apr
- 2018 06:28:53 +0000
-From: Daniel Kutasi <daniel.kutasi@outlook.de>
-To: Peter Lammich <lammich@in.tum.de>
-Subject: FDS Homework 1
-Thread-Topic: FDS Homework 1
-Thread-Index: AQHT2HDa7YsdWWeei0CnWjjCX2A00w==
-Date: Fri, 20 Apr 2018 06:28:53 +0000
-Message-ID: <AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40@AM5PR1001MB0995.EURPRD10.PROD.OUTLOOK.COM>
-Accept-Language: de-DE, en-US
-Content-Language: en-US
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-incomingtopheadermarker:
- OriginalChecksum:4123542FBA11F4B093B77761AB7597637C2AD47ED5204A3534876A3EAFAB74D8;UpperCasedChecksum:65DE71D5A77714A58AF52169EFC3D6DAC2E077BB040E6A501B5010D44BFA5A57;SizeAsReceived:6856;Count:44
-x-ms-exchange-messagesentrepresentingtype: 1
-x-tmn: [c3IxpqMarNPzdJCuDIx9m7h7GD1Mspy2]
-x-ms-publictraffictype: Email
-x-microsoft-exchange-diagnostics:
- 1;VE1EUR02HT156;7:LG+KxgnpfrR2jkv1G4EPI1+4v8YPAr+bnFBdRzN8f1TO6hQlyXU9PO5vqo1UJrIIdHfH9T7orWy2Ts9YirunYuU4wzTxwwUUwlDag8NkJmjbVf8pVJBpoxB9pxcfkUfNshmd6590BIkgvEEUSNYMOzMYUtPD4+SfM3xnmxQG3eqnbTfImYu84qDbh6iGeTA05pi9NvW0aoTD1+6MgjZU8C1qfqgDxeTv5mjiJ9OUrfHSunVdKHkhrLNvKEwKj7RL
-x-incomingheadercount: 44
-x-eopattributedmessage: 0
-x-microsoft-antispam:
- UriScan:;BCL:0;PCL:0;RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125374)(1701031045);SRVR:VE1EUR02HT156;
-x-ms-traffictypediagnostic: VE1EUR02HT156:
-x-exchange-antispam-report-cfa-test:
- BCL:0;PCL:0;RULEID:(444000031);SRVR:VE1EUR02HT156;BCL:0;PCL:0;RULEID:;SRVR:VE1EUR02HT156;
-x-forefront-prvs: 0648FCFFA8
-x-forefront-antispam-report:
- SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:VE1EUR02HT156;H:AM5PR1001MB0995.EURPRD10.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:;
-x-microsoft-antispam-message-info:
- JcRJiFsF6FoTgnsHm1gLX+gqG0i1qs2e7v7Mi7DPqHG4tZqIKupxG05oahO02/pN1lQaSMuxrMX/sQ8kCgIiD3gcRjJ2h5hqeaFkGI7guVjFoJxm+u6UDDpMPKLNx4x6qnhdmZvpBSRMiw38n9epgdgkR38q6pwpJHdSYCOAoQpUyAU0NLyihngNGXYpPYNX
-Content-Type: multipart/mixed; boundary="_004_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_"
-MIME-Version: 1.0
-X-MS-Office365-Filtering-Correlation-Id:
- 2525fb2e-9031-48c8-643c-08d5a687fbaf
-X-OriginatorOrg: outlook.com
-X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg:
- 9bd8b953-1c55-4da7-b616-8bcad099ae8b
-X-MS-Exchange-CrossTenant-Network-Message-Id:
- 2525fb2e-9031-48c8-643c-08d5a687fbaf
-X-MS-Exchange-CrossTenant-rms-persistedconsumerorg:
- 9bd8b953-1c55-4da7-b616-8bcad099ae8b
-X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2018 06:28:53.2958
- (UTC)
-X-MS-Exchange-CrossTenant-fromentityheader: Internet
-X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
-X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR02HT156
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_
-Content-Type: multipart/alternative; boundary="_000_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_"
-
-
---_000_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 8bit
-
-Hi,
-here's my submission.
-Best regards
-
-
-Kennung: ga68zak
-Matr-Nr. 03623674
-
---_000_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_
-Content-Type: text/html; charset="utf-8"
-Content-ID: <14ACC7AAE4966E4E86D40289B91D1A96@EURPRD10.PROD.OUTLOOK.COM>
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head>
-<body>
-<div dir="ltr">Hi,
-<div>here's my submission.</div>
-<div>Best regards</div>
-<div><br>
-</div>
-<div><br>
-</div>
-<div>Kennung: ga68zak</div>
-<div>Matr-Nr. 03623674</div>
-</div>
-</body>
-</html>
-
---_000_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_--
-
---_004_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_
-Content-Type: application/octet-stream; name="hw01.thy"
-Content-Description: hw01.thy
-Content-Disposition: attachment; filename="hw01.thy"; size=1066; creation-date="Fri, 20 Apr 2018 06:28:51 GMT"; modification-date="Fri, 20 Apr 2018 06:28:51 GMT"
-Content-ID: <162e1bd50d31f318ce71>
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGh3MDEKaW1wb3J0cyBNYWluCmJlZ2luCgpmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gW10gPSAwIgp8ICJsaXN0c3VtICh4
-ICMgeHMpID0geCArIGxpc3RzdW0geHMiCgp2YWx1ZSAibGlzdHN1bSBbMSwyLDNdID0gNiIKdmFs
-dWUgImxpc3RzdW0gW10gPSAwIgp2YWx1ZSAibGlzdHN1bSBbMSwtMiwzXSA9IDIiCgpsZW1tYSBs
-aXN0c3VtX2ZpbHRlcl96OiAibGlzdHN1bSAoZmlsdGVyICgleC4geCBcPG5vdGVxPiAwKSBsKSA9
-IGxpc3RzdW0gbCIKICBhcHBseSAoaW5kdWN0aW9uIGwpCiAgYnkgYXV0bwoKbGVtbWEgbGlzdHN1
-bV9yZXZfYXV4W3NpbXBdOiAibGlzdHN1bSAoeHMgQCBbYV0pID0gYSArIGxpc3RzdW0geHMiCiAg
-YXBwbHkgKGluZHVjdGlvbiB4cykKICBieSBhdXRvCgpsZW1tYSBsaXN0c3VtX3JldjogImxpc3Rz
-dW0gKHJldiB4cykgPSBsaXN0c3VtIHhzIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgYnkgYXV0
-bwoKbGVtbWEgbGlzdHN1bV9wb3NpdGl2ZXM6ICJsaXN0c3VtIChmaWx0ZXIgKCV4LiB4IFw8Z2U+
-IDApIHhzKSBcPGdlPiBsaXN0c3VtIHhzIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgYnkgYXV0
-bwoKZnVuIGZsYXR0ZW4gOjogIidhIGxpc3QgbGlzdCBcPFJpZ2h0YXJyb3c+ICdhIGxpc3QiIHdo
-ZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIKfCAiZmxhdHRlbiAobCNscykgPSBsIEAgZmxhdHRlbiBs
-cyIKCnZhbHVlICJmbGF0dGVuIFtbMSwyLDNdLFsyXV0gPSBbMSwyLDMsMjo6aW50XSIKdmFsdWUg
-ImZsYXR0ZW4gW1sxLDIsM10sW10sWzJdXSA9IFsxLDIsMywyOjppbnRdIgoKbGVtbWEgbGlzdHN1
-bV9mbGF0dGVuX2F1eFtzaW1wXTogImxpc3RzdW0gKHhzIEAgeXMpID0gbGlzdHN1bSB4cyArIGxp
-c3RzdW0geXMiCiAgYXBwbHkgKGluZHVjdGlvbiB4cykKICBieSBhdXRvCgpsZW1tYSBsaXN0c3Vt
-X2ZsYXR0ZW46ICJsaXN0c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhz
-KSIKICBhcHBseSAoaW5kdWN0aW9uIHhzKQogIGJ5IGF1dG8KCmVuZA==
-
---_004_AM5PR1001MB0995E8B57B6F6E08E9BD47FB88B40AM5PR1001MB0995_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/eric.koepke@online.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-From eric.koepke@online.de Fri Apr 20 12:28:52 2018
-Return-Path: <eric.koepke@online.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- XnWRMNbA2VokbgAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 12:28:52 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id F256C1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 12:28:52 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id E7CC01E0126
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 12:28:52
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- E53921C0376; Fri, 20 Apr 2018 12:28:52 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id E23851C038B; Fri, 20 Apr 2018 12:28:52 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id BE7101C038A for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:28:52 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id AA79D1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:28:52 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id A8EB81C24B7; Fri, 20 Apr 2018 12:28:52 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-1.9 required=7.0
- tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id D451F1C24B4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:28:50 +0200 (CEST)
-Received: from mout.kundenserver.de (mout.kundenserver.de
- [212.227.126.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id B79241C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:28:50 +0200 (CEST)
-Received: from [192.168.2.102] ([93.202.59.237]) by
- mrelayeu.kundenserver.de (mreue003 [212.227.15.167]) with ESMTPSA (Nemesis)
- id 0LodTi-1eU77w1bXG-00gYmG for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 12:28:50 +0200
-Date: Fri, 20 Apr 2018 12:28:47 +0200
-Subject: [FDS-Homework]
-X-Priority: 3
-Message-ID: <5oab9cqyp5co-o2kyug-51k2zw-e9djqc-lr8sbr-c8ejaf-480arm-pioq80tapf6c-dg4g7yi021u6-nogxww-ab9hgtj2rlwu-jr0jmpdc0wci2fspk1-xdbk4lk2kmjz-8dbbsv7y5odd-brnby4k92oo1.1524220128359@email.android.com>
-From: "eric.koepke@online.de" <eric.koepke@online.de>
-To: lammich@in.tum.de
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="--_com.android.email_1092777471577910"
-X-Provags-ID: V03:K1:mW8K95drQcW44nRwPDKxxw+dPYRS+E+GaggmiKLLDUBEHvJxrVn
- IQmjmMrfcTKPa23OmaVvGQCPJB7WGMsJ8ISezohsl8Ims/XiUyfa9g0Oyc2LWN/Y9RlMaMb
- 8mQONt9GCswQqroWzAggtSYe3usZ9V1htrFt03tTbpPVYQ2T9a8QeXyaKG91o4Ovxi+sspB
- OpZFuJGXoNIeuF8bp4a+A==
-X-UI-Out-Filterresults:
- notjunk:1;V01:K0:9jaUt64z9+Q=:gtMQP2Scf1uIEBY3i5ldiG
- 30+wQOdTy1MZaGeV9+43VjjfP2Rre8wUm04CMWhWgMp3eqXLv74IFbjfb/p7ukWdKPgj/SD4e
- YUzYmnQ4U00+bBomo6yiq34Pebfu+Tt83/JKWRpScYK972wPtf7+d5JCNJzXwse7HnqzVV1Kj
- aJezvfqKdrcwE8cQHSnm0eCNHncc/MVXIt90D55ks9z85jsp2oLJKIpuy0NVDhjKluQiDZ4Q4
- Riqi3a+wG8UEC7a7XXVgbEGao5Z3/3dO6O8NduINLyiqdTckfPTA6+faIFiKW1idsanJcgvac
- z9FWHdzzVnOEsACU784bNRF+kp3rJTvvkJZdMD2vlddMNRW1q7TBBiW8oAHr3NoQADvQzhCd8
- ICxcjAXJjXYnJ04h1JH5Al27/ZFNdaW/Rm53uzbwIadqe9dLa04I2hn1AJKkwjDykse2zok0r
- POps/jumB5fZu5tZ/VQeRXLQ8toPIYGt/W/nalqwkcSNcWw0r44sA/bmX6hjWcwssY4qwBHnZ
- CRxJlaS+8lUMugVJNXJ4IyulpBYD3MZG1EcxXh/S6M5irZEETeseLQEMfVZI8fLYjlkL6iAB6
- FFVqpz7sZSFVkEizmPIbnRRhvWrxC+vOq4FEm3jA4pKHX0Z2o0C1LnlppK3LQVEDGMNaNRQ37
- VzqK25YxrMPMbBXFQEjhOwo01RT49M1cxo6z721cJpcaQiXAzKe1Twmlh4K8lzLCNR+H88Yzd
- GpAbwhePGyLCTlaf5WJpsokafi+whUDJNoJ16Q==
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
-----_com.android.email_1092777471577910
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 8bit
-
-Hello,
-Matr.Nr.: 03665531
-Homework is attached.
-
-Greetings,
-Eric Koepke
-----_com.android.email_1092777471577910
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename="ex01.thy"; size=1031
-
-dGhlb3J5IGV4MDEKaW1wb3J0cyBNYWluCmJlZ2luCmZ1biBsaXN0c3VtOjogImludCBsaXN0IFw8
-UmlnaHRhcnJvdz4gaW50IiB3aGVyZQogImxpc3RzdW0gKGIjYSkgID0obGlzdHN1bSBhKSArIGIi
-CnwibGlzdHN1bSBbXSA9IDAiCgoKdmFsdWUgImxpc3RzdW0gWzEsMiwzXSIKdmFsdWUgImxpc3Rz
-dW0gW10iCnZhbHVlICJsaXN0c3VtIFsxLC0yLDNdIgoKbGVtbWEgbGlzdHN1bV9maWx0ZXJfejog
-Imxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geFw8bm90ZXE+MCkgbCkgPSBsaXN0c3VtIGwi
-CiAgYXBwbHkgKGluZHVjdGlvbiBsKQogIGFwcGx5IGF1dG8KICBkb25lCgpsZW1tYSBhdXhfYXBw
-OiAibGlzdHN1bSAoeHMgQCBbYV0pID0gbGlzdHN1bSAoYSN4cykiCiAgYXBwbHkgKGluZHVjdGlv
-biB4cykKICBhcHBseSBhdXRvCiAgZG9uZQoKbGVtbWEgbGlzdHN1bV9yZXY6ICJsaXN0c3VtIChy
-ZXYgeHMpID0gbGlzdHN1bSB4cyIKICBhcHBseSAoaW5kdWN0aW9uIHhzKQogIGFwcGx5IChhdXRv
-IHNpbXA6IGF1eF9hcHApCiAgZG9uZQoKbGVtbWEgbGlzdHN1bV9maWx0ZXJfbjogImxpc3RzdW0g
-KGZpbHRlciAoXDxsYW1iZGE+eC4geFw8Z2U+MCkgbCkgXDxnZT4gbGlzdHN1bSBsIgogIGFwcGx5
-IChpbmR1Y3Rpb24gbCkKICBhcHBseSBhdXRvCiAgZG9uZQoKZnVuIGZsYXR0ZW4gOjogIidhIGxp
-c3QgbGlzdCBcPFJpZ2h0YXJyb3c+ICdhIGxpc3QiIHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIK
-fCAiZmxhdHRlbiAobCNscykgPSBsIEAgZmxhdHRlbiBscyIKCnZhbHVlICJmbGF0dGVuIFtbMTo6
-aW50LDIsM10sWzJdXSIKCmxlbW1hIGF1eF9zdW06ICJsaXN0c3VtICh4cyBAIGEpID0gbGlzdHN1
-bSB4cyArIGxpc3RzdW0gYSIKICBhcHBseSAoaW5kdWN0aW9uIHhzKQogIGFwcGx5IGF1dG8KICBk
-b25lCgpsZW1tYSAibGlzdHN1bSAoZmxhdHRlbiB4cykgPSBsaXN0c3VtIChtYXAgbGlzdHN1bSB4
-cykiCiAgYXBwbHkgKGluZHVjdGlvbiB4cykKICBhcHBseSAoYXV0byBzaW1wOiBhdXhfc3VtKQog
-IGRvbmU=
-
-
-----_com.android.email_1092777471577910--
-
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/felix.wielander@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-From felix.wielander@tum.de Thu Apr 19 10:41:25 2018
-Return-Path: <felix.wielander@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- YQEIOStW2FqQRAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 10:41:25 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id F0ACA1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 10:41:25 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id EF31B1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 10:41:25
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- EC8AE1C0376; Thu, 19 Apr 2018 10:41:25 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id E95C91C03A1; Thu, 19 Apr 2018 10:41:25 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id C55291C038F for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:25 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id B0B3C1C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:25 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id AE4DB1C2DAC; Thu, 19 Apr 2018 10:41:25 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id EFEA91C2DAA
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:23 +0200 (CEST)
-Received: from postout2.mail.lrz.de (postout2.mail.lrz.de
- [129.187.255.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id E50681C2D8A
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:19 +0200 (CEST)
-Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by
- postout2.mail.lrz.de (Postfix) with ESMTP id 40RXWz6GRpz11Z2 for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:19 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- content-language:content-type:content-type:mime-version
- :user-agent:date:date:message-id:subject:subject:from:from
- :received:received; s=postout; t=1524127279; bh=G3PrXrr3qWhNuMVt
- vE9t8CDAwzrx8YlxzT0N2Kp5bZY=; b=LvF6Zua7B4CC/QPljnVxNqRKof3A54I4
- rhs5ls4+j8RWrNHCsNx+UTyJsE36MJ3SAjpajvpJp67czriZN3n8quH/bqTqQUmX
- tdc8/cYHz1j25R6vAKWOcWyMHbBt/HmVaeryyVV4D3b2OyajpDQsLspF3Z6EOxY/
- 9SGIZArBJggEFqOKhtFMXU7oEJ+zwVBj2g4NdZQPUaHlqia+xccfrAV0SD+K8CBk
- i39AAZ6vK8gkRCTN4hmImm8QLtbTOZWFmyXmu8wJgIFPvsyfCBQPcuNfrcP4sdQd
- hXSuYwW7EOn/qPpfI0dLO/hUla7vjnRCFKtcTs3YssrclY8hNo/y8g==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
-Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de
- (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- bshguiwXRMCy for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:19 +0200 (CEST)
-Received: from [IPv6:2001:a61:4801:7801:d7d6:ce52:8a2d:e4d8] (unknown
- [IPv6:2001:a61:4801:7801:d7d6:ce52:8a2d:e4d8]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate
- requested) by postout2.mail.lrz.de (Postfix) with ESMTPSA id 40RXWz2HKWzytJ
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 10:41:19 +0200 (CEST)
-To: lammich@in.tum.de
-From: Felix Wielander <felix.wielander@tum.de>
-Subject: [Functional Data Structures] Homework 1
-Message-ID: <f6307e8a-f91c-373c-2016-8dc7633a3d0b@tum.de>
-Date: Thu, 19 Apr 2018 10:41:18 +0200
-User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
- Thunderbird/52.6.0
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="------------7F3426ACDB92C73DEE938794"
-Content-Language: en-US
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-This is a multi-part message in MIME format.
---------------7F3426ACDB92C73DEE938794
-Content-Type: text/plain; charset=utf-8; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Hallo Herr Lammich,
-
-im Anhang finden Sie meine Homework1.
-
-Viele Grüße,
-Felix Wielander
-
-
---------------7F3426ACDB92C73DEE938794
-Content-Type: text/plain; charset=UTF-8; name="hw01.thy"
-Content-Disposition: attachment; filename="hw01.thy"
-Content-Transfer-Encoding: 8bit
-
-theory hw01
-imports Main
-begin
-
-(* 1 *)
-fun listsum :: "int list \<Rightarrow> int" where
-  "listsum []    = 0" |
-  "listsum (x#xs)  = x + listsum xs"
-
-value "listsum [1,2,3] = 6"
-value "listsum [] = 0"
-value "listsum [1,-2,3] = 2"
-
-(* 2 *)
-lemma listsum_filter_z : "listsum (filter (\<lambda>x . x \<noteq> 0) l) = listsum l"
-  apply(induction l)
-  apply(auto)
-  done
-
-(* 3 *)
-lemma listsum_rev_aux[simp]: "listsum (xs @ ys) = listsum xs + listsum ys"
-  apply(induction xs)
-  apply(auto)
-  done
-
-lemma listsum_rev : "listsum (rev xs) = listsum xs"
-  apply(induction xs)
-  apply(auto)
-  done
-
-(* 4 *)
-lemma listsum_filter_neg : "listsum (filter (\<lambda>x . x \<ge> 0) xs) \<ge> listsum xs"
-  apply(induction xs)
-  apply(auto)
-  done
-
-(* 5 *)
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-  "flatten [] = []" |
-  "flatten (l #ls) = l @ flatten ls"
-
-value "flatten [[1 ,2 ,3 ],[2]] = [1 ,2 ,3 ,2 ::int]"
-value "flatten [[1 ,2 ,3 ],[],[2]] = [1 ,2 ,3 ,2 ::int]"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-  apply(induction xs)
-  apply(auto)
-  done
-
-
-end
---------------7F3426ACDB92C73DEE938794--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/florian.stamer@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-From florian.stamer@tum.de Fri Apr 20 10:23:56 2018
-Return-Path: <florian.stamer@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- H3xFB5Oj2Vo0LwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:23:56 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 2C6731C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:23:56 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 2AA8C1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:23:56
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 278F41C0378; Fri, 20 Apr 2018 10:23:56 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 24BBA1C038A; Fri, 20 Apr 2018 10:23:56 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 000231C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:55 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id E98DC1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:55 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id E66D41C2DA9; Fri, 20 Apr 2018 10:23:55 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id CBBC81C2DAA
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:53 +0200 (CEST)
-Received: from postout2.mail.lrz.de (postout2.mail.lrz.de
- [129.187.255.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id C13A01C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:53 +0200 (CEST)
-Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by
- postout2.mail.lrz.de (Postfix) with ESMTP id 40S85P5Chxz11Vd for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:53 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- mime-version:content-type:content-type:content-language
- :accept-language:message-id:date:date:subject:subject:from:from
- :received:received:received:received; s=postout; t=1524212633;
- bh=QiwpzHud0FUZXc31JwMr7XADYs8uKOpGthDgcN7QFEM=; b=10HhxCDBeyuD
- XzExRFkYbVGMhg3sS9M6S4UxG7stHYUcdA4iy5e8koUdH3iZXU9tMUV8idwKV7UH
- /MLgrxzn+KbnDdZo/5QqaxK9hP4g1yzFhGh3O6VAAjgJ38wOp9qYI+xXjtzD29rp
- ffFOWVPmAIOyscsXyP6Ptd46IoPe1Yebage32eFQ6REPAP/VUNeZJSDE0op+7mos
- TkDDGqOCQ0FE1NgdhgUPH+c2AfQ8LpPwFqbcXcSGLCxTYO+LbgomZuT/Y3pBzjI2
- 76RIKLOmDIelhqUuW5InPRqfBN6KRaHbI6Vty+2VmbfDpxTJe+1lH2HQQ/GqQcut
- 4xzUr/8M1A==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
-Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de
- (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- pQvEBo4UjmKu for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:23:53 +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (BADWLRZ-SWMBX01.ads.mwn.de
- [IPv6:2001:4ca0:0:108::157]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX01",
- Issuer "BADWLRZ-SWMBX01" (not verified)) by postout2.mail.lrz.de (Postfix)
- with ESMTPS id 40S85P3DXfz11VS for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 10:23:53 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) by
- BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Fri, 20 Apr 2018 10:23:52 +0200
-Received: from BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c]) by
- BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c%12]) with mapi id
- 15.01.1466.003; Fri, 20 Apr 2018 10:23:52 +0200
-From: "Stamer, Florian" <florian.stamer@tum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: [FDS-Homework]
-Thread-Topic: [FDS-Homework]
-Thread-Index: AQHT2IC42jNPJeAssE2ubCbM5+p15g==
-Date: Fri, 20 Apr 2018 08:23:52 +0000
-Message-ID: <ca055b8148064a95b7e1191d661a898e@tum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX09.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [88.72.224.111]
-Content-Type: multipart/mixed; boundary="_004_ca055b8148064a95b7e1191d661a898etumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_ca055b8148064a95b7e1191d661a898etumde_
-Content-Type: multipart/alternative; boundary="_000_ca055b8148064a95b7e1191d661a898etumde_"
-
-
---_000_ca055b8148064a95b7e1191d661a898etumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Mr. Lammich,
-
-
-the file is in the attachment.
-
-
-Best regards
-
-Florian Stamer [03664701]
-
---_000_ca055b8148064a95b7e1191d661a898etumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-<p>Dear Mr. Lammich,</p>
-<p><br>
-</p>
-<p>the file is in the attachment.</p>
-<p><br>
-</p>
-<p>Best regards</p>
-<p>Florian Stamer [03664701]</p>
-</div>
-</body>
-</html>
-
---_000_ca055b8148064a95b7e1191d661a898etumde_--
-
---_004_ca055b8148064a95b7e1191d661a898etumde_
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Description: ex01.thy
-Content-Disposition: attachment; filename="ex01.thy"; size=897; creation-date="Fri, 20 Apr 2018 08:23:13 GMT"; modification-date="Fri, 20 Apr 2018 08:23:13 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGV4MDEKaW1wb3J0cyBNYWluCmJlZ2luCiAgKCpoMSAqKQogIGZ1biBsaXN0c3VtIDo6
-ICJpbnQgbGlzdCBcPFJpZ2h0YXJyb3c+IGludCIgd2hlcmUKICAgICJsaXN0c3VtIFtdID0gMCIK
-ICB8ICJsaXN0c3VtICh4I3hzKSA9IHggKyBsaXN0c3VtIHhzIgoKICBsZW1tYSBsaXN0c3VtX2Zp
-bHRlcl96OiAibGlzdHN1bSAoZmlsdGVyIChcPGxhbWJkYT54LiB4XDxub3RlcT4wKSBsKSA9IGxp
-c3RzdW0gbCIKICBhcHBseSAoaW5kdWN0aW9uIGwpCiAgYXBwbHkgKGF1dG8pCiAgZG9uZQoKICBs
-ZW1tYSBsaXN0c3VtX2FwcDogImxpc3RzdW0gKHhzIEAgeXMpID0gbGlzdHN1bSB4cyArIGxpc3Rz
-dW0geXMiCiAgYXBwbHkgKGluZHVjdGlvbiB4cykKICBhcHBseSAoYXV0bykKICBkb25lCgogIGxl
-bW1hIGxpc3RzdW1fcmV2OiAibGlzdHN1bSAocmV2IHhzKSA9IGxpc3RzdW0geHMiCiAgYXBwbHkg
-KGluZHVjdGlvbiB4cykKICBhcHBseSAoYXV0byBzaW1wIGFkZDogbGlzdHN1bV9hcHApCiAgZG9u
-ZQoKICBsZW1tYSBsaXN0c3VtX2ZpbHRlcl9wb3M6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRh
-PnguIHhcPGdlPjApIGwpIFw8Z2U+IGxpc3RzdW0gbCIKICBhcHBseSAoaW5kdWN0aW9uIGwpCiAg
-YXBwbHkgKGF1dG8pCiAgZG9uZQoKICBmdW4gZmxhdHRlbiA6OiAiJ2EgbGlzdCBsaXN0IFw8Umln
-aHRhcnJvdz4gJ2EgbGlzdCIgd2hlcmUKICAgICJmbGF0dGVuIFtdID0gW10iCiAgfCAiZmxhdHRl
-biAobCNscykgPSBsIEAgZmxhdHRlbiBscyIKCiAgbGVtbWEgImxpc3RzdW0gKGZsYXR0ZW4geHMp
-ID0gbGlzdHN1bSAobWFwIGxpc3RzdW0geHMpIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgYXBw
-bHkgKGF1dG8gc2ltcCBhZGQ6IGxpc3RzdW1fYXBwKQogIGRvbmUKZW5k
-
---_004_ca055b8148064a95b7e1191d661a898etumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/g.bidlingmaier@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-From g.bidlingmaier@tum.de Fri Apr 20 09:52:47 2018
-Return-Path: <g.bidlingmaier@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- ipTbODWc2VqXOwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 09:52:47 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 098E31C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 09:52:47 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 07DC01E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 09:52:47
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 052F21C0376; Fri, 20 Apr 2018 09:52:47 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 026991C038A; Fri, 20 Apr 2018 09:52:47 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id D2F0A1C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:46 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id BEF961C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:46 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id BD4D51C2DAB; Fri, 20 Apr 2018 09:52:46 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 152181C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:45 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 0A9F81C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:45 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40S7PS71r1zypb for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:44 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- content-language:content-type:content-type:mime-version
- :user-agent:date:date:message-id:subject:subject:from:from
- :received:received; s=postout; t=1524210764; bh=u8XlUi9pvZ3wMLZE
- HeepeS/QO2gIz2BRB3dsROZAtHE=; b=Nl2fFJa9Zs/RdqEJPCgS6on0gxFQdo80
- tAHt2HVpeSUVeeMkkg5gnHeBzOjpSauPnnECOq80WPIgJLqzpSMe3OQJkzWivNY0
- 4h2YZVosP6xzYOnrukWsBIx+G7kLzBRUX1hl+97DymGhGu2DuaWu6Hyx5ZFssurR
- tm5BlIE238cb0XGZYBxn4ftvN+NtgfRe8Qcvz1kDJdusWdjXHDSNNwCM/mUycsTx
- spZyyU93CNl7d72aGGvA9ibZclp/I6pYV6iEFCYIHhmNlip0nOK3Kz0B/RAFsQfx
- j0eFRGjI5gM41ZVsfNGTtOuWtRaLjGbN6WKaeyFPG4/bWBUUrYRmJA==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- g1H2eGNO-Z5x for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:44 +0200 (CEST)
-Received: from [IPv6:2001:4ca0:2003:1920:6b90:2f1d:3641:aceb]
- (w1mvwyf4vjjh7u-v6.eduroam.dynamic.rbg.tum.de
- [IPv6:2001:4ca0:2003:1920:6b90:2f1d:3641:aceb]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate
- requested) by postout1.mail.lrz.de (Postfix) with ESMTPSA id 40S7PS4J30zypV
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:44 +0200 (CEST)
-To: lammich@in.tum.de
-From: Gunther Bidlingmaier <g.bidlingmaier@tum.de>
-Subject: FDS-Homework 1
-Message-ID: <a5cad69e-0d0a-aea1-f69c-e7eced720bcb@tum.de>
-Date: Fri, 20 Apr 2018 09:52:43 +0200
-User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
- Thunderbird/52.7.0
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="------------89AC7CA573FA6F22E70AFC2F"
-Content-Language: en-US
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-This is a multi-part message in MIME format.
---------------89AC7CA573FA6F22E70AFC2F
-Content-Type: text/plain; charset=utf-8; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Gunther Bidlingmaier
-
-03663324
-
-
---------------89AC7CA573FA6F22E70AFC2F
-Content-Type: text/plain; charset=UTF-8; name="ex01.thy"
-Content-Disposition: attachment; filename="ex01.thy"
-Content-Transfer-Encoding: 8bit
-
-theory ex01
-imports Main
-begin
-
-fun listsum :: "int list \<Rightarrow> int" where
-    "listsum [] = 0"
-  | "listsum (x#xs) = x + listsum xs"
-
-value "listsum [1 ,2 ,3 ] = 6"
-value "listsum [] = 0"
-value "listsum [1 ,-2 ,3 ] = 2"
-
-lemma listsum_filter_z:
-"listsum (filter (\<lambda>x. x \<noteq> 0 ) l ) = listsum l"
-  apply (induction l)
-  apply auto
-  done
-
-lemma listsum_app: "listsum (xs @ ys) = listsum xs + listsum ys"
-  apply (induction xs)
-   apply auto
-  done
-
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-  apply (induction xs)
-  apply (auto simp: listsum_app)
-  done
-
-lemma "listsum (filter (\<lambda>x. x \<ge> 0) l) \<ge> listsum l"
-  apply (induction l)
-  apply auto
-  done
-
-
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-    "flatten [] = []"
-  | "flatten (l#ls) = l @ flatten ls"
-
-value "flatten [[1 ,2 ,3 ],[2 ]] = [1 ,2 ,3 ,2 ::int]"
-value "flatten [[1 ,2 ,3 ],[],[2 ]] = [1 ,2 ,3 ,2 ::int]"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-  apply (induction xs)
-  apply (auto simp: listsum_app)
-  done
-
-end
---------------89AC7CA573FA6F22E70AFC2F--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/ga53qud@mytum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-From ga53qud@mytum.de Thu Apr 19 22:27:04 2018
-Return-Path: <ga53qud@mytum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- DTrSKIr72FqUCAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 22:27:04 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 7D2E51C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 22:27:04 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 7B1D81E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 22:27:04
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 76DAB1C0378; Thu, 19 Apr 2018 22:27:04 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 7228E1C038B; Thu, 19 Apr 2018 22:27:04 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 4A37A1C038A for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:04 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 3F5DA1C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:04 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 3DB1D1C24B4; Thu, 19 Apr 2018 22:27:04 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.2 required=7.0 tests=BAYES_00,DEAR_SOMETHING,
- HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 72AE21C24B7
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:02 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id 67C791C03AC
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:02 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40RrBG2dHGzykj for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:02 +0200 (CEST)
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- BBFqwy4AnQrn for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:27:02 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (BADWLRZ-SWMBX09.ads.mwn.de
- [IPv6:2001:4ca0:0:108::165]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX09",
- Issuer "BADWLRZ-SWMBX09" (not verified)) by postout1.mail.lrz.de (Postfix)
- with ESMTPS id 40RrBG0gJmzykh for <lammich@in.tum.de>; Thu, 19 Apr 2018
- 22:27:02 +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) by
- BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Thu, 19 Apr 2018 22:27:00 +0200
-Received: from BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c]) by
- BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c%12]) with mapi id
- 15.01.1466.003; Thu, 19 Apr 2018 22:27:00 +0200
-From: "Das Sharma, Amartya" <ga53qud@mytum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: Functional Data Structures homework week 1
-Thread-Topic: Functional Data Structures homework week 1
-Thread-Index: AQHT2Bvbzf0qr04hu0urOmWMUpCiCQ==
-Date: Thu, 19 Apr 2018 20:27:00 +0000
-Message-ID: <fa0e0cad130b4d39aa3e57c2bc0745e9@mytum.de>
-Accept-Language: en-US
-Content-Language: en-US
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX01.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [212.204.102.86]
-Content-Type: multipart/mixed; boundary="_004_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_
-Content-Type: multipart/alternative; boundary="_000_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_"
-
-
---_000_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Sir,
-
-
-Please find attached my homework for week 1 of Functional Data Structures.
-
-
-Thanking you,
-
-Amartya Das Sharma
-
-Enrollment 03694265
-
---_000_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-<p>Dear Sir,</p>
-<p><br>
-</p>
-<p>Please find attached my homework for week 1 of Functional Data Structures.</p>
-<p><br>
-</p>
-<p>Thanking you, <br>
-</p>
-<p>Amartya Das Sharma</p>
-<p>Enrollment 03694265<br>
-</p>
-</div>
-</body>
-</html>
-
---_000_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_--
-
---_004_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_
-Content-Type: application/octet-stream; name="hw01.thy"
-Content-Description: hw01.thy
-Content-Disposition: attachment; filename="hw01.thy"; size=1032; creation-date="Thu, 19 Apr 2018 20:26:44 GMT"; modification-date="Thu, 19 Apr 2018 20:26:44 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGh3MDEKICBpbXBvcnRzIE1haW4KYmVnaW4KCmZ1biBsaXN0c3VtOjogImludCBsaXN0
-IFw8UmlnaHRhcnJvdz4gaW50IiB3aGVyZQogICJsaXN0c3VtIFtdID0gMCIKfCAibGlzdHN1bSAo
-eCAjIHhzKSA9ICBsaXN0c3VtIHhzICsgeCIKCnZhbHVlICJsaXN0c3VtIFsxLDIsM10gPSA2Igp2
-YWx1ZSAibGlzdHN1bSBbXSA9IDAiCnZhbHVlICJsaXN0c3VtIFsxLC0yLDNdID0gMiIKCmxlbW1h
-IGxpc3RzdW1fZmlsdGVyX3g6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHhcPG5vdGVx
-PjApIGwpID0gbGlzdHN1bSBsIgogIGFwcGx5KGluZHVjdGlvbiBsKQogIGFwcGx5KGF1dG8pCiAg
-ZG9uZQoKbGVtbWEgbGlzdHN1bV9hcHBlbmQ6ICJsaXN0c3VtICh4cyBAIHlzKSA9IGxpc3RzdW0g
-eHMgKyBsaXN0c3VtIHlzIgogIGFwcGx5KGluZHVjdGlvbiB4cykKICAgYXBwbHkoYXV0bykKICBk
-b25lCgpsZW1tYSBsaXN0c3VtX3JldjogImxpc3RzdW0gKHJldiB4cykgPSBsaXN0c3VtIHhzIgog
-IGFwcGx5KGluZHVjdGlvbiB4cykKICAgYXBwbHkoYXV0byBzaW1wOmxpc3RzdW1fYXBwZW5kKQog
-IGRvbmUKCmxlbW1hIGxpc3RzdW1fbm9uZWc6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPngu
-IHg+MCkgbCkgXDxnZT4gbGlzdHN1bSBsIgogIGFwcGx5KGluZHVjdGlvbiBsKQogICBhcHBseShh
-dXRvKQogIGRvbmUKCmZ1biBmbGF0dGVuIDo6ICInYSBsaXN0IGxpc3QgXDxSaWdodGFycm93PiAn
-YSBsaXN0IiB3aGVyZQogICJmbGF0dGVuIFtdID0gW10iCnwgImZsYXR0ZW4gKGwjbHMpID0gbCBA
-IGZsYXR0ZW4gbHMiCgp2YWx1ZSAiZmxhdHRlbiBbWzEsMiwzXSxbMl1dID0gWzEsMiwzLDI6Omlu
-dF0iCnZhbHVlICJmbGF0dGVuIFtbMSwyLDNdLFtdLFsyXV0gPSBbMSwyLDMsMjo6aW50XSIKCmxl
-bW1hICJsaXN0c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0obWFwIGxpc3RzdW0geHMpIgogIGFw
-cGx5KGluZHVjdGlvbiB4cykKICBhcHBseShhdXRvIHNpbXA6bGlzdHN1bV9hcHBlbmQpCiAgZG9u
-ZQoKZW5k
-
---_004_fa0e0cad130b4d39aa3e57c2bc0745e9mytumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/ge69kel@mytum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-From ge69kel@mytum.de Thu Apr 19 22:35:28 2018
-Return-Path: <ge69kel@mytum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- hvZNDHX82FpNGAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 22:35:28 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id A8F321C202A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 22:35:28 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id A75F71E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 22:35:28
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- A426F1C0376; Thu, 19 Apr 2018 22:35:28 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id A1BA91C038A; Thu, 19 Apr 2018 22:35:28 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 7D0151C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:28 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 716141C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:28 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 6FE6D1C2DAA; Thu, 19 Apr 2018 22:35:28 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.2 required=7.0 tests=BAYES_00,HTML_MESSAGE,
- RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id D59731C2DA9
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:26 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id C97421C2D8A
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:26 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40RrMy4dvPzyV4 for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:26 +0200 (CEST)
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- VuHYVKVABw61 for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:26 +0200 (CEST)
-Received: from BADWLRZ-SWMBX10.ads.mwn.de (BADWLRZ-SWMBX10.ads.mwn.de
- [10.156.54.166]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384
- (256/256 bits)) (Client CN "BADWLRZ-SWMBX10", Issuer "BADWLRZ-SWMBX10" (not
- verified)) by postout1.mail.lrz.de (Postfix) with ESMTPS id 40RrMy2XvlzyTg
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:35:26 +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) by
- BADWLRZ-SWMBX10.ads.mwn.de (2001:4ca0:0:108::166) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Thu, 19 Apr 2018 22:35:24 +0200
-Received: from BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c]) by
- BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c%12]) with mapi id
- 15.01.1466.003; Thu, 19 Apr 2018 22:35:24 +0200
-From: "Somasundaram, Arun" <ge69kel@mytum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: Functional Data Structures Week 1 Homework Submission
-Thread-Topic: Functional Data Structures Week 1 Homework Submission
-Thread-Index: AQHT2B0IxM11IYfDd0Kr6Mpo4MVzjA==
-Date: Thu, 19 Apr 2018 20:35:24 +0000
-Message-ID: <38a9442c19504df6bc6aa45082d4a38a@mytum.de>
-Accept-Language: en-US
-Content-Language: en-US
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX01.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [10.149.235.88]
-Content-Type: multipart/mixed; boundary="_004_38a9442c19504df6bc6aa45082d4a38amytumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_38a9442c19504df6bc6aa45082d4a38amytumde_
-Content-Type: multipart/alternative; boundary="_000_38a9442c19504df6bc6aa45082d4a38amytumde_"
-
-
---_000_38a9442c19504df6bc6aa45082d4a38amytumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Dr. Lammich
-
-
-Please find attached my .thy file for the week 1 homework for Functional Data Structures.
-
-
-Thank You
-
-Arun S
-
---_000_38a9442c19504df6bc6aa45082d4a38amytumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, NotoColorEmoji, &quot;Segoe UI Symbol&quot;, &quot;Android Emoji&quot;, EmojiSymbols;" dir="ltr">
-<p>Dear Dr. Lammich</p>
-<p><br>
-</p>
-<p>Please find attached my .thy file for the week 1 homework for Functional Data Structures.</p>
-<p><br>
-</p>
-<p>Thank You</p>
-<p>Arun S</p>
-</div>
-</body>
-</html>
-
---_000_38a9442c19504df6bc6aa45082d4a38amytumde_--
-
---_004_38a9442c19504df6bc6aa45082d4a38amytumde_
-Content-Type: application/octet-stream; name="Homework01.thy"
-Content-Description: Homework01.thy
-Content-Disposition: attachment; filename="Homework01.thy"; size=1023; creation-date="Thu, 19 Apr 2018 20:32:02 GMT"; modification-date="Thu, 19 Apr 2018 20:32:02 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IEhvbWV3b3JrMDEKICBpbXBvcnRzIE1haW4KYmVnaW4KZnVuIGxpc3RzdW0gOjogImlu
-dCBsaXN0IFw8UmlnaHRhcnJvdz4gaW50IiB3aGVyZQogICJsaXN0c3VtIFtdID0gMCIKfCAibGlz
-dHN1bSAoeCN4cykgPSB4ICsgbGlzdHN1bSB4cyIKCnZhbHVlICJsaXN0c3VtIFsxLDIsM10gPSA2
-Igp2YWx1ZSAibGlzdHN1bSBbXSA9IDAiCnZhbHVlICJsaXN0c3VtIFsxLC0yLDNdID0gMiIKCmxl
-bW1hIGxpc3RzdW1maWx0ZXJfejogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geFw8bm90
-ZXE+MCkgbCkgPSBsaXN0c3VtIGwiCiAgYXBwbHkgKGluZHVjdGlvbiBsKQogICBhcHBseSBhdXRv
-CiAgZG9uZQpsZW1tYSBsaXN0c3VtbGlzdDogImxpc3RzdW0gKHhzQHlzKSA9KGxpc3RzdW0geHMp
-ICsgKGxpc3RzdW0geXMpIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgIGFwcGx5IGF1dG8KICBk
-b25lCgpsZW1tYSBsaXN0c3VtX3JldjogImxpc3RzdW0gKHJldiB4cykgPSBsaXN0c3VtIHhzIgog
-IGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgIGFwcGx5IChhdXRvIHNpbXA6IGxpc3RzdW1saXN0KQog
-IGRvbmUKCmxlbW1hIGxpc3RzdW1maWx0ZXJfbjogImxpc3RzdW0gKGZpbHRlcihcPGxhbWJkYT54
-LiB4PjApIGwpIFw8Z2U+IGxpc3RzdW0gbCIKICBhcHBseShpbmR1Y3Rpb24gbCkKICAgYXBwbHkg
-YXV0bwogIGRvbmUKCmZ1biBmbGF0dGVuIDo6ICInYSBsaXN0IGxpc3QgXDxSaWdodGFycm93Pidh
-IGxpc3QiIHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIKfCAiZmxhdHRlbiAobCNscykgPSBsQGZs
-YXR0ZW4gbHMiCgp2YWx1ZSAiZmxhdHRlbiBbWzEsMiwzXSxbMl1dID0gWzEsMiwzLDI6OmludF0i
-CnZhbHVlICJmbGF0dGVuIFtbMSwyLDNdLFtdLFsyXV0gPSBbMSwyLDMsMjo6aW50XSIKCmxlbW1h
-ICJsaXN0c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhzKSIKICBhcHBs
-eShpbmR1Y3Rpb24geHMpCiAgYXBwbHkgKGF1dG8gc2ltcDpsaXN0c3VtbGlzdCkKICAgCiAg
-
---_004_38a9442c19504df6bc6aa45082d4a38amytumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/ge72lic@mytum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-From ge72lic@mytum.de Fri Apr 20 10:19:49 2018
-Return-Path: <ge72lic@mytum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- KsjvL5yi2VqyHwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:19:49 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4D7FE1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:19:49 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4BB251E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:19:49
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 48D0E1C0376; Fri, 20 Apr 2018 10:19:49 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 462DA1C038B; Fri, 20 Apr 2018 10:19:49 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 232611C038A for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:49 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 187F31C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:49 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 16B031C24B7; Fri, 20 Apr 2018 10:19:49 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-3.8 required=7.0 tests=BAYES_00,HTML_MESSAGE,
- MIME_HTML_MOSTLY,RCVD_IN_DNSWL_MED,TVD_SPACE_RATIO autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 6404C1C24B4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:47 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id 593B01C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:47 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40S80g2BTTzybn for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:47 +0200 (CEST)
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- 6XE3a7JCk62w for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:19:47 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (BADWLRZ-SWMBX09.ads.mwn.de
- [IPv6:2001:4ca0:0:108::165]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX09",
- Issuer "BADWLRZ-SWMBX09" (not verified)) by postout1.mail.lrz.de (Postfix)
- with ESMTPS id 40S80g0kZXzySZ for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 10:19:47 +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) by
- BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Fri, 20 Apr 2018 10:19:45 +0200
-Received: from BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c]) by
- BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c%12]) with mapi id
- 15.01.1466.003; Fri, 20 Apr 2018 10:19:45 +0200
-From: "Pfeiffer, Marcus" <ge72lic@mytum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: [FDS-Homework] Marcus Pfeiffer (03703095)
-Thread-Topic: [FDS-Homework] Marcus Pfeiffer (03703095)
-Thread-Index: AQHT2IBFcYZYlLnmT0WvHBXsgEOX6A==
-Date: Fri, 20 Apr 2018 08:19:45 +0000
-Message-ID: <dd315048b776433c93cb876eb9fe2e92@mytum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX01.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [131.159.76.55]
-Content-Type: multipart/mixed; boundary="_004_dd315048b776433c93cb876eb9fe2e92mytumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_dd315048b776433c93cb876eb9fe2e92mytumde_
-Content-Type: multipart/alternative; boundary="_000_dd315048b776433c93cb876eb9fe2e92mytumde_"
-
-
---_000_dd315048b776433c93cb876eb9fe2e92mytumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-
-
---_000_dd315048b776433c93cb876eb9fe2e92mytumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-</div>
-</body>
-</html>
-
---_000_dd315048b776433c93cb876eb9fe2e92mytumde_--
-
---_004_dd315048b776433c93cb876eb9fe2e92mytumde_
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Description: ex01.thy
-Content-Disposition: attachment; filename="ex01.thy"; size=1029; creation-date="Fri, 20 Apr 2018 08:15:52 GMT"; modification-date="Fri, 20 Apr 2018 08:15:52 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGV4MDEKaW1wb3J0cyBNYWluCmJlZ2luCiBmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiAgICAibGlzdHN1bSBbXSA9IDAiCiAgfCAibGlzdHN1
-bSAoeCN4cykgPSB4ICsgbGlzdHN1bSB4cyIKCiB2YWx1ZSAiKGxpc3RzdW0gWzEgLDIgLDMgXSkg
-PSA2IgogdmFsdWUgImxpc3RzdW0gW10gPSAwIgogdmFsdWUgImxpc3RzdW0gWzEgLC0yICwzIF0g
-PSAyIgogdmFsdWUgImxlbihbMSwgMiwgM10pIgoKbGVtbWEgbGlzdHN1bV9maWx0ZXJfejogImxp
-c3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eCAuIHggXDxub3RlcT4gMCApIGwgKSA9IGxpc3RzdW0g
-bCIKICBhcHBseShpbmR1Y3Rpb24gbCkgYnkgYXV0bwoKbGVtbWEgYXV4IDogImxpc3RzdW0oeHNA
-eXMpID0gbGlzdHN1bSB4cyArIGxpc3RzdW0geXMiCiAgYXBwbHkoaW5kdWN0aW9uIHhzKSBieSBh
-dXRvCgoKbGVtbWEgbGlzdHN1bV9yZXY6ICJsaXN0c3VtIChyZXYgeHMpID0gbGlzdHN1bSB4cyIK
-ICBhcHBseShpbmR1Y3Rpb24geHMpCiAgIGFwcGx5KGF1dG8gc2ltcDogYXV4KQogIGRvbmUKCmxl
-bW1hIGxpc3RzdW1fbm9uX2RlY3I6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnggLiB4IFw8
-Z2U+IDApIGwpIFw8Z2U+IGxpc3RzdW0gbCIKICBhcHBseShpbmR1Y3Rpb24gbCkgYnkgYXV0bwoK
-CmZ1biBmbGF0dGVuIDo6ICInYSBsaXN0IGxpc3QgXDxSaWdodGFycm93PiAnYSBsaXN0IiB3aGVy
-ZQogICJmbGF0dGVuIFtdID0gW10iCnwgImZsYXR0ZW4gKGwjbHMpID0gbEAgZmxhdHRlbiBscyAi
-Cgp2YWx1ZSAiZmxhdHRlbiBbWzEgLDIgLDMgXSxbMiBdXSA9IFsxICwyICwzICwyIDo6aW50XSIK
-dmFsdWUgImZsYXR0ZW4gW1sxICwyICwzIF0sW10sWzIgXV0gPSBbMSAsMiAsMyAsMiA6OmludF0i
-CgoKCmxlbW1hICJsaXN0c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhz
-KSIKICBhcHBseShpbmR1Y3Rpb24geHMpCiAgYXBwbHkoYXV0byBzaW1wOiBhdXgpCiAgZG9uZQoK
-ZW5k
-
---_004_dd315048b776433c93cb876eb9fe2e92mytumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/j.gottfriedsen@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-From j.gottfriedsen@tum.de Thu Apr 19 19:10:15 2018
-Return-Path: <j.gottfriedsen@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- Gk3cBnDN2FovKAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 19:10:15 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 9A7291C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 19:10:15 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 98C391E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 19:10:15
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 951361C0376; Thu, 19 Apr 2018 19:10:15 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 924791C038A; Thu, 19 Apr 2018 19:10:15 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 6E5851C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 19:10:15 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 63B001C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 19:10:15 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 6178D1C2DB7; Thu, 19 Apr 2018 19:10:15 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.2 required=7.0 tests=AWL,BAYES_00,HTML_MESSAGE,
- RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4AD771C2DBA
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 19:10:07 +0200 (CEST)
-Received: from forwout1.mail.lrz.de (forwout1.mail.lrz.de
- [129.187.255.130]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 3FE1E1C2DBC
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 19:10:07 +0200 (CEST)
-Received: from postforw2.mail.lrz.de (postforw.mail.lrz.de
- [IPv6:2001:4ca0:0:116::a9c:63e]) by forwout1.mail.lrz.de (Postfix) with
- ESMTP id 40Rlq30rj9zQ3 for <lammich@in.tum.de>; Thu, 19 Apr 2018 19:10:07
- +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (BADWLRZ-SWMBX01.ads.mwn.de
- [10.156.54.157]) by postforw2.mail.lrz.de (Postfix) with ESMTP id
- 40Rlq30ggvzySN for <ga57nid@exchwl.mytum.de>; Thu, 19 Apr 2018 19:10:07
- +0200 (CEST)
-Received: from BADWLRZ-SWMBX07.ads.mwn.de (2001:4ca0:0:108::163) by
- BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Thu, 19 Apr 2018 19:10:05 +0200
-Received: from BADWLRZ-SWMBX07.ads.mwn.de ([fe80::302d:9066:578c:4d70]) by
- BADWLRZ-SWMBX07.ads.mwn.de ([fe80::302d:9066:578c:4d70%13]) with mapi id
- 15.01.1466.003; Thu, 19 Apr 2018 19:10:05 +0200
-From: Jakob Gottfriedsen <j.gottfriedsen@tum.de>
-To: "Lammich, Peter" <peter.lammich@tum.de>
-Subject: Submission of FDS Homework Sheet 1
-Thread-Topic: Submission of FDS Homework Sheet 1
-Thread-Index: AQHT2AEtWOXEl2wHbESbhXEE+gKG5Q==
-Date: Thu, 19 Apr 2018 17:10:05 +0000
-Message-ID: <ba5a70acc7e1465cb8fb73137475b8cb@tum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [188.193.150.59]
-Content-Type: multipart/mixed; boundary="_004_ba5a70acc7e1465cb8fb73137475b8cbtumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_ba5a70acc7e1465cb8fb73137475b8cbtumde_
-Content-Type: multipart/alternative; boundary="_000_ba5a70acc7e1465cb8fb73137475b8cbtumde_"
-
-
---_000_ba5a70acc7e1465cb8fb73137475b8cbtumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Hello,
-
-
-As the submission system is still not available, my solution to sheet 1 is attached to this mail.
-
-
-Name:
-
-Jakob Gottfriedsen
-
---_000_ba5a70acc7e1465cb8fb73137475b8cbtumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, &quot;EmojiFont&quot;, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, NotoColorEmoji, &quot;Segoe UI Symbol&quot;, &quot;Android Emoji&quot;, EmojiSymbols;">
-<p>Hello,</p>
-<p><br>
-</p>
-<p>As the submission system is still not available, my solution to sheet 1 is attached to this mail.</p>
-<p><br>
-</p>
-<p>Name:</p>
-<p>Jakob Gottfriedsen<br>
-</p>
-</div>
-</body>
-</html>
-
---_000_ba5a70acc7e1465cb8fb73137475b8cbtumde_--
-
---_004_ba5a70acc7e1465cb8fb73137475b8cbtumde_
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Description: ex01.thy
-Content-Disposition: attachment; filename="ex01.thy"; size=979; creation-date="Thu, 19 Apr 2018 17:06:34 GMT"; modification-date="Thu, 19 Apr 2018 17:06:34 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGV4MDEKICBpbXBvcnRzIE1haW4KYmVnaW4KCmZ1biBsaXN0c3VtIDo6ICJpbnQgbGlz
-dCBcPFJpZ2h0YXJyb3c+IGludCIgd2hlcmUKICAibGlzdHN1bSBbXSA9IDAiIHwKICAibGlzdHN1
-bSAoeCAjIHhzKSA9IHggKyBsaXN0c3VtIHhzIgoKdmFsdWUgImxpc3RzdW1bMSwgMiwgM10gPSA2
-Igp2YWx1ZSAibGlzdHN1bVtdID0gMCIKdmFsdWUgImxpc3RzdW1bMSwgLTIsIDNdID0gMiIKCmxl
-bW1hIGxpc3RzdW1fZmlsdGVyX3o6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHggXDxu
-b3RlcT4gMCkgbCkgPSBsaXN0c3VtIGwiCiAgYnkgKGluZHVjdGlvbiBsKSBhdXRvCgpsZW1tYSBs
-aXN0c3VtX2FwcDogImxpc3RzdW0gKHhzIEAgeXMpID0gbGlzdHN1bSB4cyArIGxpc3RzdW0geXMi
-CiAgYnkgKGluZHVjdGlvbiB4cykgYXV0bwoKbGVtbWEgbGlzdHN1bV9yZXY6ICJsaXN0c3VtIChy
-ZXYgeHMpID0gbGlzdHN1bSB4cyIKICBieSAoaW5kdWN0aW9uIHhzKSAoYXV0byBzaW1wIGFkZDog
-bGlzdHN1bV9hcHApCgpsZW1tYSBsaXN0c3VtX2ZpbHRlcl9uZWc6ICJsaXN0c3VtIGwgXDxsZT4g
-bGlzdHN1bSAoZmlsdGVyIChcPGxhbWJkYT54LiB4IFw8Z2U+IDApIGwpIgogIGJ5IChpbmR1Y3Rp
-b24gbCkgYXV0bwoKZnVuIGZsYXR0ZW4gOjogIidhIGxpc3QgbGlzdCBcPFJpZ2h0YXJyb3c+ICdh
-IGxpc3QiIHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIgfAogICJmbGF0dGVuIChsICMgbHMpID0g
-bCBAIGZsYXR0ZW4gbHMiCgp2YWx1ZSAiZmxhdHRlbiBbWzEsIDIsIDNdLCBbMl1dID0gWzEsIDIs
-IDMsIDI6OmludF0iCnZhbHVlICJmbGF0dGVuIFtbMSwgMiwgM10sIFtdLCBbMl1dID0gWzEsIDIs
-IDMsIDI6OmludF0iCgpsZW1tYSAibGlzdHN1bSAoZmxhdHRlbiB4cykgPSBsaXN0c3VtIChtYXAg
-bGlzdHN1bSB4cykiCiAgYnkgKGluZHVjdGlvbiB4cykgKGF1dG8gc2ltcCBhZGQ6IGxpc3RzdW1f
-YXBwKQoKZW5kCg==
-
---_004_ba5a70acc7e1465cb8fb73137475b8cbtumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/j.v.mutius@gmail.com	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-From j.v.mutius@gmail.com Fri Apr 20 10:28:04 2018
-Return-Path: <j.v.mutius@gmail.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- v6z8Nlik2Vp9OgAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:28:04 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 736AA1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:28:04 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 720291E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:28:04
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 6FA701C0376; Fri, 20 Apr 2018 10:28:04 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 6D1FB1C038F; Fri, 20 Apr 2018 10:28:04 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 4A36B1C038A for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:28:04 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 358201C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:28:04 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 340411C2DA9; Fri, 20 Apr 2018 10:28:04 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.0 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2
- autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 317C51C2DAB
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:27:56 +0200 (CEST)
-Received: from mail-wr0-f172.google.com (mail-wr0-f172.google.com
- [209.85.128.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 1F8891C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:27:51 +0200 (CEST)
-Received: by mail-wr0-f172.google.com with SMTP id v15-v6so2576427wrm.10
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 01:27:51 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
- s=20161025; h=message-id:subject:from:to:date:mime-version;
- bh=jAEPPkGWtJM/5KvSpakog6L+0z9nRvzML1PIorUVKMI=;
- b=tTt9KUeDimhUYPC8/qcawT8/it0Eguu83oQrwfOIwOMQp2Keko85IrOw4rsNedtCe+
- Lx5wjEQ0kKC2e98pRC7/sTSdkktpM39n+6J90RuST962ISe0svuR3JPWTsErLPGO/dgd
- bIDGgw3HS3C5nnH4FKTK6QG4zROrAvnrV7whL7uifQq800h4jLEnM7QMTDZtn8fs0SOa
- zfRlL85ks+AzuPI7b1CgFk2W+6U903rSOlKstfavQvNNqNmPtVqO3fn6exn9gz+CHm3H
- WWB0N5lMPZq34bJelDRCpEsagdfLb8Fqcrbi8kp3Yo0Us7cNRabLaqV+LXiMZ48sckrA ovpw==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
- s=20161025;
- h=x-gm-message-state:message-id:subject:from:to:date:mime-version;
- bh=jAEPPkGWtJM/5KvSpakog6L+0z9nRvzML1PIorUVKMI=;
- b=T5AIpDj2RNEuAOL8kVgp3kdOhmFxM9ch7Kaq5K7WFk+zEtVGAmltmbPVoMtLXtWVAR
- 2lC53Jld1GparIygt+1Zt7yhobhoHHrLna8qh0uxfPhLk8zkoaC6bmL8MOrk0pynLiup
- bedmAR3neHKwLuPmFpaLjHkmVEnrYiGMjsF3awQIFbH1RU9jYHCyGrEJAFOqEYO7LyS0
- JM7gR8r9OOrJ9dg3zMObuPcY6Acy/T4T5pd7qe5UVsHTIrbaxvmILM92bXD0IWhDI17A
- HjbXXbIt8Hn6wzKIIldN0heEAYyOqtSiVee1CpCmP2z3vMkaatE4MUSgBuiLmUMymP6g       
- 9fWg==
-X-Gm-Message-State:
- ALQs6tCNkWe9e83FBEVgQDx1y6p9o6D5f0fn+NHDlO0uT5pd1mIbohzh
- glxAY0Sfu/5fZ1raWGYs6XNhke5h
-X-Google-Smtp-Source:
- AIpwx49olfu1GwDw2wgBySQwfBZlCMsxFrnKL09io43TxJ0NcMEDSxagf9J2XUqleoeyYw6/vlCbwQ==
-X-Received: by 2002:adf:e38e:: with SMTP id
- e14-v6mr1129541wrm.198.1524212870634; Fri, 20 Apr 2018 01:27:50 -0700 (PDT)
-Received: from x200arch (w3mcopupx55fiv-v6.eduroam.dynamic.rbg.tum.de.
- [2001:4ca0:2003:1920:ee1a:a3c0:db1f:36d8]) by smtp.googlemail.com with
- ESMTPSA id u5sm2137657wmd.40.2018.04.20.01.27.49 for <lammich@in.tum.de>
- (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20
- Apr 2018 01:27:49 -0700 (PDT)
-Message-ID: <d6cfee84ae0ed8abcd3f28808e75618207522af6.camel@gmail.com>
-Subject: [FDS-Homework]
-From: Joshua von Mutius <j.v.mutius@gmail.com>
-To: Peter Lammich <lammich@in.tum.de>
-Date: Fri, 20 Apr 2018 10:25:18 +0200
-Content-Type: multipart/mixed; boundary="=-9jZk6IzviEKaXdlzCTxS"
-X-Mailer: Evolution 3.28.1 
-Mime-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---=-9jZk6IzviEKaXdlzCTxS
-Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-Hello Mr. Lammich,
-
-attached to this email one can find my theory file for 
-the homework.
-
-Joshua von Mutius
---=-9jZk6IzviEKaXdlzCTxS
-Content-Disposition: attachment; filename="hw01.thy"
-Content-Type: text/plain; name="hw01.thy"; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-theory hw01
-  imports Main
-begin
-
-fun listsum :: "int list \<Rightarrow> int" where
-"listsum [] = 0" |
-"listsum (x#xs) = x + listsum xs"
-
-value "listsum [1,2,3] = 6"
-value "listsum [] = 0"
-value "listsum [1,-2,3] = 2"
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x \<noteq>  0) l) = listsum l"
-  apply(induction l) by auto
-
-lemma listsum_app: "listsum (xs @ ys) = listsum xs + listsum ys"
-  apply(induction xs) by auto
-
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-  apply(induction xs) by (auto simp: listsum_app)
-
-lemma listsum_filt_neg_smalleq: "listsum (filter (\<lambda>x. x \<ge> 0) xs) \<ge> listsum xs"
-  apply(induction xs) by auto
-
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-"flatten [] = []" |
-"flatten (l#ls) = l @ flatten ls"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-  apply(induction xs) by (auto simp: listsum_app)
-
-end
---=-9jZk6IzviEKaXdlzCTxS--
-
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/jonatan.juhas@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-From jonatan.juhas@tum.de Fri Apr 20 22:47:29 2018
-Return-Path: <jonatan.juhas@gmail.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- yuwIMdpR2lqNRQAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 22:47:29 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 33E9F1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 22:47:29 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 2E8741E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 22:47:29
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 2BDF61C0376; Fri, 20 Apr 2018 22:47:29 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 28BBE1C037C; Fri, 20 Apr 2018 22:47:29 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 02F101C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 22:47:29 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id EC6E01C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 22:47:28 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id EA43C1C24B7; Fri, 20 Apr 2018 22:47:28 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-0.2 required=7.0
- tests=BAYES_00,HTML_IMAGE_ONLY_08,
- HTML_IMAGE_RATIO_08,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,
- T_REMOTE_IMAGE autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id C89B81C24B4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 22:47:26 +0200 (CEST)
-Received: from mail-wr0-f172.google.com (mail-wr0-f172.google.com
- [209.85.128.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id B509A1C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 22:47:26 +0200 (CEST)
-Received: by mail-wr0-f172.google.com with SMTP id f14-v6so26100993wre.4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 13:47:26 -0700 (PDT)
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
- s=20161025;
- h=x-gm-message-state:date:from:to:message-id:subject:mime-version;
- bh=uJw0VNCfCBWu8RlBkgMResd4VedqNZ4Kxj4p2rKQYHw=;
- b=F7VOXmRzGB7kiy6lD56pF3WCL833JHZKnOBEXmBLZVz4NqWgJfeU4VvSE1BqxNRdM3
- R6vCDN+ElL9BCl+5OpneZOh4eRcIimx+8/D8xW9oKSOubfVgbDAQ72isJnD19DlsQ6T2
- cdt/23x6j4TiYyeStDJAs2UtlDOAT1FX6qs7+BC+XCux0CWq+hKI7Sq9Tgg7uEYWGeFv
- UMeEm9ERkNjgnA+gJAE0MnMFBfXqwYJ2Y12LhuaYbBhtUM7cLxJRVsYyrReGm/f2cHhL
- GaEez/+4W73j2asaPxqfKEIrfjaDKPUE5wBpdU10HQmQaDyn6bF5MIjC+fYnDw72m7LX eFSg==
-X-Gm-Message-State:
- ALQs6tAgWH0gjXQtK1sR/S+FtVwgFPAtiN4L1ZVQNavQ3M9SEeP5iqKi
- JbePy2TmxT2fweBxPAoj1PUq8KDD
-X-Google-Smtp-Source:
- AIpwx49/udh/58yunEXJtmd0X4hf+36QrOOqjYyvnVEMGPCG7QL2f9Ls+hTxzRswZxui9cZAnpp/3A==
-X-Received: by 10.80.138.138 with SMTP id
- j10mr15553804edj.36.1524257246074; Fri, 20 Apr 2018 13:47:26 -0700 (PDT)
-Received: from DisMyLaptop ([195.242.213.115]) by smtp.gmail.com with
- ESMTPSA id f13sm3978826edl.67.2018.04.20.13.47.24 for <lammich@in.tum.de>
- (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);     Fri,
- 20 Apr 2018 13:47:24 -0700 (PDT)
-Date: Fri, 20 Apr 2018 22:47:23 +0200
-From: "J. Juhas" <jonatan.juhas@tum.de>
-To: "=?utf-8?Q?lammich=40in.tum.de?=" <lammich@in.tum.de>
-Message-ID: <1524256873.local-ecd65737-76e1-v1.2.1-7e7447b6@getmailspring.com>
-Subject: [FDS-Homework]
-X-Mailer: Mailspring
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="5ada51db_7d63dc4_8fe"
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---5ada51db_7d63dc4_8fe
-Content-Type: multipart/alternative; boundary="5ada51db_5e22cec9_8fe"
-
-
---5ada51db_5e22cec9_8fe
-Content-Type: text/plain; charset="utf-8"
-Content-Disposition: inline
-Content-Transfer-Encoding: 8bit
-
-Dear Peter,
-
-I was unable to attend classes today nor the last week. I presume the submission via E-Mail deadline was the same as the one for the submission system.
-Since I don't know if you discussed the solutions during today's lecture I wanted to try and submit my solution anyways - if for nothing else than for the sake of feedback.
-
-Thanks and have a nice weekend,
-Jonatan Juhas
-
---5ada51db_5e22cec9_8fe
-Content-Type: text/html; charset="utf-8"
-Content-Disposition: inline
-Content-Transfer-Encoding: 8bit
-
-<div>Dear Peter,</div><br><div>I was unable to attend classes today nor the last week. I presume the submission via E-Mail deadline was the same as the one for the submission system.</div><div>Since I don't know if you discussed the solutions during today's lecture I wanted to try and submit my solution anyways - if for nothing else than for the sake of feedback.</div><br><div>Thanks and have a nice weekend,</div><div>Jonatan Juhas</div><div><signature id="local-2d702942-d407"></signature></div><img class="mailspring-open" alt="Open Tracking" width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/1524256873.local-ecd65737-76e1-v1.2.1-7e7447b6@getmailspring.com?recipient=bGFtbWljaEBpbi50dW0uZGU%3D">
---5ada51db_5e22cec9_8fe--
-
---5ada51db_7d63dc4_8fe
-Content-Type: application/octet-stream
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename="ha01.thy"
-
-dGhlb3J5IGhhMDEKICBpbXBvcnRzIE1haW4KYmVnaW4KCigqIEltcGxlbWVudGF0aW9uICopCmZ1
-biBsaXN0c3VtIDo6ICJpbnQgbGlzdCBcPFJpZ2h0YXJyb3c+IGludCIgd2hlcmUKICAibGlzdHN1
-bSBbXSA9IDAiIHwKICAibGlzdHN1bSAoeCN4cykgPSB4ICsgbGlzdHN1bSB4cyIKCigqIEJydXRl
-IHRlc3RpbmcgKikKKCogSSdtIG5vdCBzdXJlIHlldCB3aGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0
-d2VlbiB2YWx1ZSBidXQgSSB0aGluayBsZW1tYSBpcyBiZXR0ZXIgaGVyZSAqKQpsZW1tYSAibGlz
-dHN1bSBbMSwyLDNdID0gNiIgYnkgYXV0bwpsZW1tYSAibGlzdHN1bSBbXSA9IDAiIGJ5IGF1dG8K
-bGVtbWEgImxpc3RzdW0gWzEsLTIsM10gPSAyIiBieSBhdXRvCgooKiBGaXJzdCBjb25kaXRpb246
-IEZpbHRlcmluZyB6ZXJvZXMgZG9lc24ndCBjaGFuZ2UgcmVzdWx0ICopCmxlbW1hIGxpc3RzdW1f
-ZmlsdGVyX3plcm86ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHggXDxub3RlcT4gMCkg
-bCkgPSBsaXN0c3VtIGwiCiAgYXBwbHkgKGluZHVjdGlvbiBsKQogIGFwcGx5IGF1dG8KICBkb25l
-CgooKiBTZWNvbmQgY29uZGl0aW9uOiBSZXZlcnNpbmcgbGlzdCBkb2Vzbid0IGNoYW5nZSByZXN1
-bHQgKikKbGVtbWEgYXV4OiAibGlzdHN1bSAoeHNAeXMpID0gbGlzdHN1bSB4cyArICBsaXN0c3Vt
-IHlzIiAKICBhcHBseSAoaW5kdWN0aW9uIHhzKSBieSBhdXRvCgpsZW1tYSBsaXN0c3VtX3JldmVy
-c2U6ICJsaXN0c3VtIChyZXYgbCkgPSBsaXN0c3VtIGwiCiAgYXBwbHkgKGluZHVjdGlvbiBsKQog
-IGFwcGx5IChhdXRvIHNpbXA6IGF1eCkKICBkb25lCgooKiBUaGlyZCBjb25kaXRpb246IEZpbHRl
-cmluZyBvdXQgbmVnYXRpdmUgbnVtYmVycyByZXN1bHRzIGluIGEgcmVzdWx0IGVxdWFsIG9yIGdy
-ZWF0ZXIgdGhhbiBvcmlnaW5hbCAqKQpsZW1tYSBsaXN0c3VtX2ZpbHRlcl9uZWdhdGl2ZTogImxp
-c3RzdW0gbCBcPGdlPiBsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHggPCAwKSBsKSIKICBh
-cHBseSAoaW5kdWN0aW9uIGwpCiAgYXBwbHkgKGF1dG8gc2ltcDogYXV4KQogIGRvbmUKKCogTm90
-ZTogVG9vayBhIHdoaWxlIHVudGlsIEkgZmlndXJlZCBpdCBjYW4gYWN0dWFsbHkgYmUgZ3JlYXRl
-ciAqKQoKZnVuIGZsYXR0ZW4gOjogIidhIGxpc3QgbGlzdCBcPFJpZ2h0YXJyb3c+ICdhIGxpc3Qi
-IHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIgfAogICJmbGF0dGVuIChsI2xzKSA9IGwgQCBmbGF0
-dGVuIGxzIgoKKCogQnJ1dGUgdGVzdGluZyAqKQpsZW1tYSAiZmxhdHRlbiBbWzEsMiwzXSwgWzJd
-XSA9IFsxLDIsMywyOjppbnRdIiBieSBhdXRvCmxlbW1hICJmbGF0dGVuIFtbMSwyLDNdLFtdLFsy
-XV0gPSBbMSwyLDMsMjo6aW50XSIgYnkgYXV0bwoKKCogRmlyc3QgY29uZGl0aW9uOiBTdW0gb2Yg
-dGhlIGZsYXR0ZW5lZCBsaXN0IGlzIGVxdWFsIHRvIHRoZSBzdW0gb2YgYWxsIGl0J3MgZWxlbWVu
-dHMgKikKbGVtbWEgImxpc3RzdW0gKGZsYXR0ZW4geHMpID0gbGlzdHN1bSAobWFwIGxpc3RzdW0g
-eHMpIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgYXBwbHkgKGF1dG8gc2ltcDogYXV4KQogIGRv
-bmUKCmVuZA==
-
---5ada51db_7d63dc4_8fe--
-
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/katharinaluise.schmitt@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-From katharinaluise.schmitt@tum.de Fri Apr 20 17:11:49 2018
-Return-Path: <katharinaluise.schmitt@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- 6RlwF+kC2lqxTQAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 17:11:49 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id C37C61C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 17:11:49 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id C200A1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 17:11:49
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- BECAE1C038A; Fri, 20 Apr 2018 17:11:49 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id BB5501C037C; Fri, 20 Apr 2018 17:11:49 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 957661C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:49 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 8B14E1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:49 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 89B661C2DA9; Fri, 20 Apr 2018 17:11:49 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id D1A2C1C2DAA
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:47 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id C6B201C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:47 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40SK835PL2z1042 for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:47 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- mime-version:content-type:content-type:content-language
- :accept-language:message-id:date:date:subject:subject:from:from
- :received:received:received:received; s=postout; t=1524237107;
- bh=F0EtooP59VEjDWwWHVwnxax46XkTmLqvfx22XJx848I=; b=yo955fzUrrFB
- tp4GABHSiSTfpV4pvQS+h+VtedE+HR2eH0aS9mBfZj3j9DqKCmQVhGIrM6KrpusY
- 67Q7seC5oHtc5IJrLtN3CL6zM9fhy2dYioI4UCk1/YX9xNNGn1G/hy0fMWll9R1/
- VSqgqmyAv1qY/DB8fIYXDGwmAsgLCWDOwa2i/HacaWqwCWapLqxQCC5Ob3q6vdRE
- fPlBx5tsKRyljSLSa6F97pmEDvk/Pbg/QlHSCpVCDgMUXBOOaCb35XU4iO1naJQt
- 0DWsL8d55Wmq1JjnCzg3HwVuf8/6TZOCXz70yMh1xPd+hpEIFGm5srujJ/nbT3O5
- FSviH8ID1w==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- vunE5DgiYdQB for <lammich@in.tum.de>; Fri, 20 Apr 2018 17:11:47 +0200 (CEST)
-Received: from BADWLRZ-SWMBX08.ads.mwn.de (BADWLRZ-SWMBX08.ads.mwn.de
- [IPv6:2001:4ca0:0:108::164]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX08",
- Issuer "BADWLRZ-SWMBX08" (not verified)) by postout1.mail.lrz.de (Postfix)
- with ESMTPS id 40SK8318jtz103t for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 17:11:47 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) by
- BADWLRZ-SWMBX08.ads.mwn.de (2001:4ca0:0:108::164) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Fri, 20 Apr 2018 17:11:36 +0200
-Received: from BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c]) by
- BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c%12]) with mapi id
- 15.01.1466.003; Fri, 20 Apr 2018 17:11:36 +0200
-From: "Schmitt, Katharina" <katharinaluise.schmitt@tum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: [FDS-Homework] Submission for Exercise Sheet 1
-Thread-Topic: [FDS-Homework] Submission for Exercise Sheet 1
-Thread-Index: AQHT2LkuXBQHIxdttUaVTtTsJyGXIQ==
-Date: Fri, 20 Apr 2018 15:11:35 +0000
-Message-ID: <e99ef75ca2b04729a131c0996a060342@tum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX09.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [188.174.55.139]
-Content-Type: multipart/mixed; boundary="_004_e99ef75ca2b04729a131c0996a060342tumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_e99ef75ca2b04729a131c0996a060342tumde_
-Content-Type: multipart/alternative; boundary="_000_e99ef75ca2b04729a131c0996a060342tumde_"
-
-
---_000_e99ef75ca2b04729a131c0996a060342tumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Dr. Lammich,
-
-
-attached please find my homework submission for the first exercise sheet.
-
-My administrative data is the following:
-
-
-Name: Katharina Schmitt
-
-Enrollment Number: 03630761
-
-TUM User ID: ga49ceq
-
-
-Best regards,
-
-Katharina Schmitt
-
---_000_e99ef75ca2b04729a131c0996a060342tumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,&quot;EmojiFont&quot;,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;,NotoColorEmoji,&quot;Segoe UI Symbol&quot;,&quot;Android Emoji&quot;,EmojiSymbols">
-<p>Dear Dr. Lammich,</p>
-<p><br>
-</p>
-<p>attached please find my homework submission for the first exercise sheet. <br>
-</p>
-<p>My administrative data is the following:</p>
-<p><br>
-</p>
-<p>Name: Katharina Schmitt</p>
-<p>Enrollment Number: 03630761</p>
-<p>TUM User ID: ga49ceq<br>
-</p>
-<p><br>
-</p>
-<p>Best regards,</p>
-<p>Katharina Schmitt<br>
-</p>
-</div>
-</body>
-</html>
-
---_000_e99ef75ca2b04729a131c0996a060342tumde_--
-
---_004_e99ef75ca2b04729a131c0996a060342tumde_
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Description: ex01.thy
-Content-Disposition: attachment; filename="ex01.thy"; size=1068; creation-date="Fri, 20 Apr 2018 15:06:46 GMT"; modification-date="Fri, 20 Apr 2018 15:06:46 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGV4MDEKaW1wb3J0cyBNYWluCmJlZ2luCgpmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiJsaXN0c3VtIFtdID0gMCIgfAoibGlzdHN1bSAoeCN4
-cykgPSAobGlzdHN1bSB4cykgKyB4IgoKdmFsdWUgImxpc3RzdW0gWzEsMiwzXSIKdmFsdWUgImxp
-c3RzdW0gW10iCnZhbHVlICJsaXN0c3VtIFsxLC0yLCAzXSIKCmxlbW1hIGxpc3RzdW1fZmlsdGVy
-X3ogOiAibGlzdHN1bSAoZmlsdGVyIChcPGxhbWJkYT54IC4geCBcPG5vdGVxPiAwICkgbCApID0g
-bGlzdHN1bSBsIgogIGFwcGx5KGluZHVjdGlvbiBsKQogIGFwcGx5KGF1dG8pCiAgZG9uZQoKbGVt
-bWEgbGlzdHN1bV9hcHAgOiAibGlzdHN1bSAoeHMgQCB5cykgPSAobGlzdHN1bSB4cykgKyAobGlz
-dHN1bSB5cykiCiAgYXBwbHkoaW5kdWN0aW9uIHhzKQogIGFwcGx5KGF1dG8pCiAgZG9uZQoKbGVt
-bWEgbGlzdHN1bV9yZXYgOiAibGlzdHN1bSAocmV2IHhzKSA9IGxpc3RzdW0geHMiCiAgYXBwbHko
-aW5kdWN0aW9uIHhzKQogIGFwcGx5KGF1dG8gc2ltcCBhZGQ6IGxpc3RzdW1fYXBwKQogIGRvbmUK
-CmxlbW1hIGxpc3RfZmlsdGVyIDogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eCAuIHggXDxn
-ZT4gMCApIHhzICkgXDxnZT4gbGlzdHN1bSB4cyIKICBhcHBseShpbmR1Y3Rpb24geHMpCiAgYXBw
-bHkoYXV0bykKICBkb25lCgpmdW4gZmxhdHRlbiA6OiAiJ2EgbGlzdCBsaXN0IFw8UmlnaHRhcnJv
-dz4gJ2EgbGlzdCIgd2hlcmUKImZsYXR0ZW4gW10gPSBbXSIgfAoiZmxhdHRlbiAobCAjbHMpID0g
-bCBAIGZsYXR0ZW4gbHMiCgp2YWx1ZSAiZmxhdHRlbiBbWzEgLDIgLDMgXSxbMiBdXSA9IFsxICwy
-ICwzICwyIDo6aW50XSIKdmFsdWUgImZsYXR0ZW4gW1sxICwyICwzIF0sW10sWzIgXV0gPSBbMSAs
-MiAsMyAsMiA6OmludF0iCgpsZW1tYSBmbGF0dGVuX3N1bSA6ICJsaXN0c3VtIChmbGF0dGVuIHhz
-KSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhzKSIKICBhcHBseShpbmR1Y3Rpb24geHMpCiAgYXBw
-bHkoYXV0byBzaW1wIGFkZDogbGlzdHN1bV9hcHApCiAgZG9uZQoKZW5k
-
---_004_e99ef75ca2b04729a131c0996a060342tumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/m.kirchmeier@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-From m.kirchmeier@tum.de Thu Apr 19 22:44:33 2018
-Return-Path: <m.kirchmeier@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- kx0qC3T/2Fo2QAAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 22:44:33 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4ED821C202A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 22:44:33 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4D55B1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 22:44:33
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 4A6C11C0378; Thu, 19 Apr 2018 22:44:33 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 426E71C0376; Thu, 19 Apr 2018 22:44:33 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 07CE41C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:44:28 +0200
- (CEST)
-Received: from vmrbg98.informatik.tu-muenchen.de
- (vmrbg98.informatik.tu-muenchen.de [131.159.0.123]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id F1B801C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:44:27 +0200 (CEST)
-Received: from webmail.in.tum.de (localhost [IPv6:::1]) by
- vmrbg98.informatik.tu-muenchen.de (Postfix) with ESMTP id EB36B404C6 for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 22:44:27 +0200 (CEST)
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="=_90323e05579a11977fede066d4576338"
-Date: Thu, 19 Apr 2018 22:44:27 +0200
-From: Maximilian Kirchmeier <m.kirchmeier@tum.de>
-To: Peter Lammich <lammich@in.tum.de>
-Subject: FDS Hausaufgabe
-Message-ID: <85e2ddb6d14da4c4f6612bfd78a289fe@tum.de>
-X-Sender: m.kirchmeier@tum.de
-User-Agent: Roundcube Webmail/1.3.3
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---=_90323e05579a11977fede066d4576338
-Content-Type: text/plain; charset=UTF-8; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Hallo Peter,
-
-ich höre dieses Semester FDS (will ja nicht dass meine Isabelle Skills 
-gleich wieder einschlafen ;D).
-
-Irgendwie ist aber die offizielle Hausaufgaben-Hochlademaske für FDS 
-anscheinend noch nicht aktiviert, dort gibt's nur Info 2 und Semantics 
-zur Auswahl.
-Deshalb schicke ich Dir die erste Hausaufgabe mal auf diesem Weg.
-
-Viele Grüße
-Max
---=_90323e05579a11977fede066d4576338
-Content-Type: text/plain; name=hw01.thy
-Content-Disposition: attachment; filename=hw01.thy; size=763
-Content-Transfer-Encoding: 8bit
-
-theory hw01
-imports Main
-begin
-
-fun listsum :: "int list \<Rightarrow> int" where
-"listsum [] = 0" |
-"listsum (x # xs) = x + listsum xs"
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x \<noteq> 0) l) = listsum l"
-proof (induction l)
-qed (simp+)
-
-lemma listsum_add[simp]: "listsum (a @ b) = listsum a + listsum b"
-proof (induction a)
-qed (simp+)
-
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-proof (induction xs)
-qed (simp+)
-
-lemma listsum_filterneg: "listsum (filter (\<lambda>x. x > 0) l) \<ge> listsum l"
-proof (induction l)
-qed (auto+)
-
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-"flatten [] = []" |
-"flatten (l # ls) = l @ flatten ls"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-proof (induction xs)
-qed (simp+)
-
-end
---=_90323e05579a11977fede066d4576338--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/markuswebel@gmail.com	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-From markuswebel@gmail.com Wed Apr 18 22:10:25 2018
-Return-Path: <markuswebel@gmail.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- MTlfMgel11qnAgAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Wed, 18 Apr 2018 22:10:25 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id DF1771C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Wed, 18 Apr 2018
- 22:10:25 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id DDB5F1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Wed, 18 Apr 2018 22:10:25
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- DACF21C0393; Wed, 18 Apr 2018 22:10:25 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id D6EDB1C038F; Wed, 18 Apr 2018 22:10:25 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id AC26C1C038A for <lammich@in.tum.de>; Wed, 18 Apr 2018 22:10:25 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 97BDB1C0376
- for <lammich@in.tum.de>; Wed, 18 Apr 2018 22:10:25 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 93E711C2DAA; Wed, 18 Apr 2018 22:10:25 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.3 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,
- RCVD_IN_MSPIKE_H2 autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id E42C61C2DA9
- for <lammich@in.tum.de>; Wed, 18 Apr 2018 22:10:23 +0200 (CEST)
-Received: from mail-io0-f181.google.com (mail-io0-f181.google.com
- [209.85.223.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 957911C2DA5
- for <lammich@in.tum.de>; Wed, 18 Apr 2018 22:10:23 +0200 (CEST)
-Received: by mail-io0-f181.google.com with SMTP id d6-v6so3959982iog.1 for
- <lammich@in.tum.de>; Wed, 18 Apr 2018 13:10:23 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
- s=20161025; h=mime-version:from:date:message-id:subject:to;
- bh=uJbjzlK+e/v+4q8AyieWeCD3DqvNMeH/pcJr4Evobik=;
- b=FGgwj1qb6/9tJIzGT18lt+M0BkyBK1XtH+/2JhJ9gG7+OBfStDBuw4aVodtWe86lfy
- oHphrRXuweh33G61dIiF3ZxSv0o34OZgLLsRJzc83qY/wuSIqrXZs6q9htlTyoqRSwlf
- dc5QAYHb/N3K+56qpgXij/x6M/nZQDNhtJlhEuKZMjE/3hIUiNFwDJkUF0d25Xk3XZ36
- UUKDpRspxYNdPqsJ8U7I+rioNVSKE6mTVwxrkyJtaNmUL6Ec+f8eTA3/I1ZKoDIZDSSi
- DhR9qQzJdXfpKnuwQF7S+SGBi2ulUfZXFLvrUea/ccrfkpnY/sn+edzV+EBRUBCK8mub Z4kw==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
- s=20161025;
- h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
- bh=uJbjzlK+e/v+4q8AyieWeCD3DqvNMeH/pcJr4Evobik=;
- b=na70PD3T5HQC2CTiyltVUShcCfCFSK2uwSj9EIJvklSc1tMFw2HZ8k4DQ5ojEB3qK7
- /avwDV3i6zLl5ddJxXbvKgJsHFZqGUcuGJ8jUW7yPvN8bHfiooLKdTLHPg8R+x4ZukWr
- /mqyt2m+Naxsd53NUk3oDJ7puTB1JVqOBdqsKIhTvTf0xK+O2XERnqTuWsQApyesnN9/
- yiwLKMlZv+heKOFxhmThGAxAd9/2nbnrWZD9wNAc8Ec8lmDHyUHJUMKfyFkphS0lduN6
- mzZzskKXBtgcZoqz2f70R9t/EAKGC/LbwUQBxEEmy/2Gh2DixkhauZc6ct9UA9G1EV+j Y51Q==
-X-Gm-Message-State:
- ALQs6tCIVqYpRlUdQUL/8wNACyJcARYxzYl7qzeKlmEGbJ1tYjs3R0Mw
- +fQBFRFxqI/0r6KXh7Z0TbdQ0Zx9yzNwMbOz50w=
-X-Google-Smtp-Source:
- AB8JxZq2fpuNSxQQUpXwh3HUKSnfapc4m03HnAuPTOmYe5A+Lc6s3iDO0xa7fGbk2OvL8miMFNjdhfF1guhettewhFU=
-X-Received: by 2002:a6b:b889:: with SMTP id
- i131-v6mr3517791iof.300.1524082221879; Wed, 18 Apr 2018 13:10:21 -0700 (PDT)
-MIME-Version: 1.0
-Received: by 10.107.50.203 with HTTP; Wed, 18 Apr 2018 13:10:21 -0700 (PDT)
-From: Markus Webel <markuswebel@gmail.com>
-Date: Wed, 18 Apr 2018 22:10:21 +0200
-Message-ID: <CAJC9A_Chi1OJ+L11JqxOFChzbNsa=32u8d+n3qk=-6p=TC8g2Q@mail.gmail.com>
-Subject: FDS Homework - Markus Webel - 03649123
-To: lammich@in.tum.de
-Content-Type: multipart/mixed; boundary="00000000000071d1b4056a250bf8"
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---00000000000071d1b4056a250bf8
-Content-Type: multipart/alternative; boundary="00000000000071d1b0056a250bf6"
-
-
---00000000000071d1b0056a250bf6
-Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-Hello Doctor Lammich,
-
-I forgot where to turn in my homework, so I just attached it to this email
-:)
-
-Greetings,
-
-Markus Webel
-
---00000000000071d1b0056a250bf6
-Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-<div dir="ltr">Hello Doctor Lammich,<div><br></div><div>I forgot where to turn in my homework, so I just attached it to this email :)</div><div><br></div><div>Greetings,</div><div><br></div><div>Markus Webel</div></div>
-
---00000000000071d1b0056a250bf6--
-
---00000000000071d1b4056a250bf8
-Content-Type: application/octet-stream; name="ex01.thy"
-Content-Disposition: attachment; filename="ex01.thy"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: f_jg5j62jb0
-
-dGhlb3J5IGV4MDEKaW1wb3J0cyBNYWluCmJlZ2luCgpmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gW10gPSAwIiB8CiAgImxpc3RzdW0g
-KHgjeHMpID0geCArIGxpc3RzdW0geHMiCgp2YWx1ZSAibGlzdHN1bSBbMSwyLDNdID0gNiIKdmFs
-dWUgImxpc3RzdW0gW10gPSAwIgp2YWx1ZSAibGlzdHN1bSBbMSwtMiwzXSA9IDIiCgpsZW1tYSBs
-aXN0c3VtX2ZpbHRlcl96IDogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geCBcPG5vdGVx
-PiAwKSBsKSA9IGxpc3RzdW0gbCIKICBhcHBseSAoaW5kdWN0aW9uIGwpIGJ5IGF1dG8KCmxlbW1h
-IGxpc3RzdW1fYXBwIFtzaW1wXSA6ICJsaXN0c3VtICh4c0B5cykgPSBsaXN0c3VtIHhzICsgbGlz
-dHN1bSB5cyIKICBhcHBseSAoaW5kdWN0aW9uIHhzKSBieSBhdXRvCgpsZW1tYSBsaXN0c3VtX3Jl
-diA6ICJsaXN0c3VtIChyZXYgeHMpID0gbGlzdHN1bSB4cyIKICBhcHBseSAoaW5kdWN0aW9uIHhz
-KQogIGFwcGx5IGF1dG8KICBkb25lCgpsZW1tYSBsaXN0c3VtX2ZpbHRlcl9uZWcgOiAibGlzdHN1
-bSAoZmlsdGVyIChcPGxhbWJkYT54LiB4IFw8Z2U+IDApIGwpIFw8Z2U+IGxpc3RzdW0gbCIKICBh
-cHBseSAoaW5kdWN0aW9uIGwpIGJ5IGF1dG8KCmZ1biBmbGF0dGVuIDo6ICInYSBsaXN0IGxpc3Qg
-XDxSaWdodGFycm93PiAnYSBsaXN0IiB3aGVyZQogICJmbGF0dGVuIFtdID0gW10iIHwKICAiZmxh
-dHRlbiAobCNscykgPSBsIEAgZmxhdHRlbiBscyIKCnZhbHVlICJmbGF0dGVuIFtbMSwyLDNdLFsy
-XV0gPSBbMSwyLDMsMjo6aW50XSIKdmFsdWUgImZsYXR0ZW4gW1sxLDIsM10sW10sWzJdXSA9IFsx
-LDIsMywyOjppbnRdIgoKbGVtbWEgImxpc3RzdW0gKGZsYXR0ZW4geHMpID0gbGlzdHN1bSAobWFw
-IGxpc3RzdW0geHMpIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpIGJ5IGF1dG8KCigqIEZvciBzb21l
-IHJlYXNvbiBJIGFscmVhZHkgcHJvdmVkIHRoaXMuIFRha2UgdGhhdCEgKikKCmVuZAo=
---00000000000071d1b4056a250bf8--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/martin.rau@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-From martin.rau@tum.de Fri Apr 20 12:16:42 2018
-Return-Path: <martin.rau@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- uNcsJAq+2VrrRQAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 12:16:42 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 92F0B1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 12:16:42 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 919731E0126
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 12:16:42
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 8ECD91C038B; Fri, 20 Apr 2018 12:16:42 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 8C3591C038A; Fri, 20 Apr 2018 12:16:42 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 687E21C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:42 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 550EB1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:42 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 536F51C24B8; Fri, 20 Apr 2018 12:16:42 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no
- version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id A95FD1C24B4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:40 +0200 (CEST)
-Received: from postout1.mail.lrz.de (postout1.mail.lrz.de
- [129.187.255.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id 9F4731C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:40 +0200 (CEST)
-Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by
- postout1.mail.lrz.de (Postfix) with ESMTP id 40SBbX4FVmz100N for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:40 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- content-language:content-type:content-type:mime-version
- :user-agent:date:date:message-id:subject:subject:from:from
- :received:received; s=postout; t=1524219400; bh=z3oZ/uUgFq8l31wP
- Rz/1ZqyZkZVpe+WiJFVvRBNTmdA=; b=ykrNntTooA3xYuyap5neT1iyHr0c0kYA
- WL8pCxbxg7A8glFBHTyO1KlSVzwTNSMEDQ8tsS8AVayka1OU2dg7phbnmEfsTQT1
- 9imHDVCwAgYUfMctTEoE3BG5MaCnrTO+oEfDJthVxJAql0z1gC46JBRSCAEP/YsL
- Or16dbPr/IRjnJPn98lHGw1sk61AkOKYFR4/s3TAe39Cv2JPbHdxoGtZC0KY89HU
- cJs2IRKfwGWaPcDW0lY90KgU03i1TMpc5HX7VGyaA5qIDnCKbjObwIChn/d+ijmt
- 5oOWEYGASylz7FIZep2jLvHcH3odJ4vwIs/YhmturTp821cCixQTAw==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
-Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de
- (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- YaJL5brzaIOL for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:40 +0200 (CEST)
-Received: from [IPv6:2a02:810d:4240:1778:d5a1:cb55:53de:306f] (unknown
- [IPv6:2a02:810d:4240:1778:d5a1:cb55:53de:306f]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate
- requested) by postout1.mail.lrz.de (Postfix) with ESMTPSA id
- 40SBbX0WRdz100L for <lammich@in.tum.de>; Fri, 20 Apr 2018 12:16:40 +0200
- (CEST)
-To: lammich@in.tum.de
-From: Martin Rau <martin.rau@tum.de>
-Subject: [FDS-Homework] Martin Rau
-Message-ID: <4394f576-e47e-5e49-ddbf-d4eb819b38fa@tum.de>
-Date: Fri, 20 Apr 2018 12:16:38 +0200
-User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
- Thunderbird/52.7.0
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="------------E616297312A9093A0C12E8BD"
-Content-Language: en-US
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-This is a multi-part message in MIME format.
---------------E616297312A9093A0C12E8BD
-Content-Type: text/plain; charset=utf-8; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Submission for Homework 1.
-
-Kind regards,
-
-Martin Rau
-
---------------E616297312A9093A0C12E8BD
-Content-Type: text/plain; charset=UTF-8; name="Home01.thy"
-Content-Disposition: attachment; filename="Home01.thy"
-Content-Transfer-Encoding: 8bit
-
-theory Home01
-imports Main
-begin 
-
-text {* Homework 1 *}
-
-fun listsum :: "int list \<Rightarrow> int" where
-  "listsum [] = 0"
-| "listsum (h#t) = h + listsum t"
-
-value "listsum [1,2,3] = 6"
-value "listsum [] = 0"
-value "listsum [1,-2,3] = 2"
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x\<noteq>0) l) = listsum l"
-apply (induction l)
-apply (auto)
-done
-
-lemma listsum_append[simp]: "listsum (xs @ ys) = listsum xs + listsum ys"
-apply (induction xs)
-apply (auto)
-done
-
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-apply (induction xs)
-apply (auto)
-done
-
-lemma listsum_filter_negative: "listsum (filter (\<lambda>x. x\<ge>0) l) \<ge> listsum l"
-apply (induction l)
-apply (auto)
-done
-
-fun flatten :: "'a list list \<Rightarrow> 'a list" where
-  "flatten [] = []"
-| "flatten (l#ls) = l @ flatten ls"
-
-value "flatten [[1,2,3],[2]] = [1,2,3,2::int]"
-value "flatten [[1,2,3],[],[2]]= [1,2,3,2::int]"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-apply (induction xs)
-apply (auto)
-done
-
-end
---------------E616297312A9093A0C12E8BD--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/mitja.krebs@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-From mitja.krebs@tum.de Thu Apr 19 21:33:46 2018
-Return-Path: <mitja.krebs@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- roB7F/Xu2FrYbQAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 21:33:46 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 79FCB1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 21:33:46 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 783B21E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 21:33:46
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 7599D1C0378; Thu, 19 Apr 2018 21:33:46 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 72D8F1C038B; Thu, 19 Apr 2018 21:33:46 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 4F1791C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:33:46 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 449241C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:33:46 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 432261C24B8; Thu, 19 Apr 2018 21:33:46 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.2 required=7.0 tests=BAYES_00,RCVD_IN_DNSWL_MED
- autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 6016F1C24B7
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:33:44 +0200 (CEST)
-Received: from rmail.zv.tum.de (mail.zv.tum.de [129.187.125.248]) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 556391C03AC
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 21:33:44 +0200 (CEST)
-Message-ID: <-1687527553.1524166399008.JavaMail.javamailuser@localhost>
-Date: Thu, 19 Apr 2018 21:33:19 +0200 (CEST)
-From: Mitja Daniel Krebs <mitja.krebs@tum.de>
-To: lammich@in.tum.de
-Subject: Functional data structures, homework 1
-Mime-Version: 1.0
-Content-Type: multipart/mixed;  boundary="----=_Part_0_409274085.1524166399002"
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
-------=_Part_0_409274085.1524166399002
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 8bit
-
-Hallo Herr Dr. Lammich,
-
-da es im Abgabesystem auf https://vmnipkow3.in.tum.de/ noch keinen Eintrag für die Vorlesung Functional data structures gibt, lasse ich Ihnen meinen Lösungsvorschlag für die erste Hausaufgabe (siehe Anhang) per E-Mail zukommen. Ich hoffe, das passt so.
-
-Viele Grüße
-Mitja Krebs
-------=_Part_0_409274085.1524166399002
-Content-Type: application/octet-stream; name=hw01.thy
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename=hw01.thy
-
-dGhlb3J5IGh3MDEKaW1wb3J0cyBNYWluCmJlZ2luCgpmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gW10gPSAwIgp8ICJsaXN0c3VtICh4
-ICMgeHMpID0geCArIGxpc3RzdW0geHMiCgp2YWx1ZSAibGlzdHN1bSBbMSwgMiwgM10gPSA2Igp2
-YWx1ZSAibGlzdHN1bSBbXSA9IDAiCnZhbHVlICJsaXN0c3VtIFsxLCAtMiwgM10gPSAyIgoKbGVt
-bWEgbGlzdHN1bV9maWx0ZXJfejogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geCBcPG5v
-dGVxPiAwKSBsKSA9IGxpc3RzdW0gbCIKICBhcHBseSAoaW5kdWN0aW9uIGwpCiAgYXBwbHkgYXV0
-bwogIGRvbmUKCmxlbW1hIGxpc3RzdW1fcmV2X2F1eFtzaW1wXTogImxpc3RzdW0gKHhzIEAgeXMp
-ID0gbGlzdHN1bSB4cyArIGxpc3RzdW0geXMiCiAgYXBwbHkgKGluZHVjdGlvbiB4cykKICBhcHBs
-eSAoaW5kdWN0aW9uIHlzKQogIGFwcGx5IGF1dG8KICBkb25lCgpsZW1tYSBsaXN0c3VtX3Jldjog
-Imxpc3RzdW0gKHJldiB4cykgPSBsaXN0c3VtIHhzIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAg
-YXBwbHkgYXV0bwogIGRvbmUKCmxlbW1hICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHgg
-XDxnZT4gMCkgbCkgXDxnZT4gbGlzdHN1bSBsIgogIGFwcGx5IChpbmR1Y3Rpb24gbCkKICBhcHBs
-eSBhdXRvCiAgZG9uZQoKZnVuIGZsYXR0ZW4gOjogIidhIGxpc3QgbGlzdCBcPFJpZ2h0YXJyb3c+
-ICdhIGxpc3QiIHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIKfCAiZmxhdHRlbiAobCAjIGxzKSA9
-IGwgQCBmbGF0dGVuIGxzIgoKdmFsdWUgImZsYXR0ZW4gW1sxLCAyLCAzXSwgWzJdXSA9IFsxLCAy
-LCAzLCAyOjppbnRdIgp2YWx1ZSAiZmxhdHRlbiBbWzEsIDIsIDNdLCBbXSwgWzJdXSA9IFsxLCAy
-LCAzLCAyOjppbnRdIgoKbGVtbWEgImxpc3RzdW0gKGZsYXR0ZW4geHMpID0gbGlzdHN1bSAobWFw
-IGxpc3RzdW0geHMpIgogIGFwcGx5IChpbmR1Y3Rpb24geHMpCiAgYXBwbHkgYXV0bwogIGRvbmUK
-CmVuZA==
-------=_Part_0_409274085.1524166399002--
-
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/odnoshivkin@me.com	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-From odnoshivkin@me.com Fri Apr 20 10:22:18 2018
-Return-Path: <odnoshivkin@me.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- min3Njej2Vp0KgAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:22:18 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 8868C1C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:22:18 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 7901A1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:22:18
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 76A891C0393; Fri, 20 Apr 2018 10:22:18 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 73F0F1C0394; Fri, 20 Apr 2018 10:22:18 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 4F1C61C0376 for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:22:18 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 452131C0393
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:22:18 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 43CA51C2DAB; Fri, 20 Apr 2018 10:22:18 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-3.1 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,T_DKIMWL_WL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id BF1201C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:22:15 +0200 (CEST)
-Received: from mr26p50im-ztdg04121101.me.com (mr26p50im-ztdg04121101.me.com
- [17.120.69.158]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 912C21C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:22:15 +0200 (CEST)
-Received: from process-dkim-sign-daemon.mr26p50im-ztdg04121101.me.com by
- mr26p50im-ztdg04121101.me.com (Oracle Communications Messaging Server
- 8.0.1.2.20170607 64bit (built Jun  7 2017)) id
- <0P7H007005TSZO00@mr26p50im-ztdg04121101.me.com> for lammich@in.tum.de;
- Fri, 20 Apr 2018 08:21:35 +0000 (GMT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=me.com; s=04042017;
- t=1524212495; bh=wg9UDOsO0kj67jkmQkBA75mEBLbKUNkmqQMdRF4urXw=;
- h=From:Content-type:MIME-version:Subject:Message-id:Date:To;
- b=Qu5UQBK+x4JOEqsRAX9pWu7C2x67wXqMIQbOXwgFPVbEW/n9Gfr4YYwcPV5AXwaEj
- xKQqvIneYmGGXKmohcyJqGSyyEzeUw3BAWll4AydIHJR/Tz0lsfg3EVtLhnmzC+WCb
- DWCpsYb/qsKkGmcL0rmAsydmrh0nSDrxRJUUpC8gnOaIPYCa8oMXD2ei/pSVtMDVhF
- LJCDXR3LasJh/gS4pOWr9OXMXt7P0zvxn0Lm+c86S8ogRCrLwbuWnHo4GNcZUGwwlf
- bw4ZuCce+hLzYu5G3h67wrbU8QslbQU6u9dGt2vg3AgXkwd9+8xFQyZjAjmGVedjl3
- mqugV8wVYQOgQ==
-Received: from icloud.com ([127.0.0.1]) by mr26p50im-ztdg04121101.me.com
- (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 
- 7 2017)) with ESMTPSA id <0P7H00B545VWPT40@mr26p50im-ztdg04121101.me.com>
- for lammich@in.tum.de; Fri, 20 Apr 2018 08:21:35 +0000 (GMT)
-X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,,
- definitions=2018-04-20_02:,, signatures=0
-X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
- clxscore=1011 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0
- bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1
- engine=8.0.1-1707230000 definitions=main-1804200085
-From: Mykola Odnoshyvkin <odnoshivkin@me.com>
-Content-type: multipart/mixed; boundary="Apple-Mail=_700B3C9B-E730-46AD-B3A8-FBA5C506C25A"
-MIME-version: 1.0 (Mac OS X Mail 10.3 \(3273\))
-Subject: [FDS-Homework] Mykola Odnoshyvkin (03662600)
-Message-id: <798DBA6B-8A98-4384-9B3B-0DEC2CE7151D@me.com>
-Date: Fri, 20 Apr 2018 10:21:31 +0200
-To: lammich@in.tum.de
-X-Mailer: Apple Mail (2.3273)
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---Apple-Mail=_700B3C9B-E730-46AD-B3A8-FBA5C506C25A
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 8bit
-
-Hi,
-Here is my homework 1.
-
-Best Regards,
-Mykola
---Apple-Mail=_700B3C9B-E730-46AD-B3A8-FBA5C506C25A
-Content-Disposition: attachment; filename=hw1.thy
-Content-Type: application/octet-stream; x-unix-mode=0644; name="hw1.thy"
-Content-Transfer-Encoding: 7bit
-
-theory hw1
-  imports Main
-
-begin
-fun listsum :: "int list \<Rightarrow> int" where
-"listsum [] = 0"|
-"listsum (x#xs) = x + listsum xs"
-
-value "listsum [1,2,3] = 6"
-value "listsum [] = 0"
-value "listsum [1,-2,3] = 2"
-
-lemma listsum_filter_z: "listsum (filter (\<lambda>x. x \<noteq> 0) l) = listsum l"
-apply(induction l)
-apply(auto)
-  done
-
-lemma listsum_app[simp]: "listsum (xs@ys) = listsum(xs) + listsum(ys)"
-  apply(induction xs)
-   apply(auto)
-  done 
-  
-lemma listsum_rev: "listsum (rev xs) = listsum xs"
-apply(induction xs)
-apply(auto)
-done
-
-lemma listsum_filter_neg: "listsum (filter (\<lambda>x. x>0) l) \<ge> listsum l"
-  apply(induction l)
-   apply(auto)
-  done
-
-fun flatten :: " 'a list list \<Rightarrow> 'a list" where
-"flatten [] = []"
-| "flatten (l#ls) = l @ flatten ls"
-
-value "flatten [[1,2,3],[2]] = [1,2,3,2::int]"
-value "flatten [[1,2,3],[],[2]] = [1,2,3,2::int]"
-
-lemma "listsum (flatten xs) = listsum (map listsum xs)"
-  apply(induction xs)
-  apply (auto)
-  done
-
-end
---Apple-Mail=_700B3C9B-E730-46AD-B3A8-FBA5C506C25A--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/omar.badramany@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-From omar.badramany@tum.de Thu Apr 19 22:16:36 2018
-Return-Path: <omar.badramany@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- iUB0OQL52FpcawAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Thu, 19 Apr 2018 22:16:36 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id D85961C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Thu, 19 Apr 2018
- 22:16:36 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id D6FB71E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Thu, 19 Apr 2018 22:16:36
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- D40B61C0376; Thu, 19 Apr 2018 22:16:36 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id D157D1C038A; Thu, 19 Apr 2018 22:16:36 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id ACDB91C0378 for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:36 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id A24A91C0376
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:36 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id A04B31C2DAD; Thu, 19 Apr 2018 22:16:36 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 6F0571C2DA9
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:31 +0200 (CEST)
-Received: from postout2.mail.lrz.de (postout2.mail.lrz.de
- [129.187.255.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 63F3B1C2D8A
- for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:31 +0200 (CEST)
-Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by
- postout2.mail.lrz.de (Postfix) with ESMTP id 40Rqy72S28z11VS for
- <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:31 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- mime-version:content-type:content-type:content-language
- :accept-language:message-id:date:date:subject:subject:from:from
- :received:received:received:received; s=postout; t=1524168991;
- bh=zcM90mISy8XsE+i9pj/WBzd2yBJGMqR97i+bVB8HB/o=; b=h4GGgxVW2LZl
- eoVSZn0uKami9T9jBVzH1DoMbxo1WMV4KEXy1qh8AacEdiIqazNJFo+Ajn7kJ3+t
- O9NouYzwgx5yWWHkzRpZokeN+WNJC3g2Lm02/ddGf1njpc5bANYcB1x6UmVVqjRV
- k1QCwWww050bB+R72Ygt8XWCov6FESi22u73aMTF4SVdgWUJ8PQPWsrkQ0bc0e+W
- F3qlNQJ9Eput0aF3Dy+2/5XsD2qgvFNVWQgx+x0G38J8mGg7BhxudbQq7eZHSgEE
- 6HYUGBsQ3boy/wbWH9QP6+KOvzqoSVUStY1v+bEgckaCtrgKPFP9/WCtbSSrPW61
- coQP/qLLQA==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
-Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de
- (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- GRQCsaeWMLzT for <lammich@in.tum.de>; Thu, 19 Apr 2018 22:16:31 +0200 (CEST)
-Received: from BADWLRZ-SWMBX08.ads.mwn.de (BADWLRZ-SWMBX08.ads.mwn.de
- [IPv6:2001:4ca0:0:108::164]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX08",
- Issuer "BADWLRZ-SWMBX08" (not verified)) by postout2.mail.lrz.de (Postfix)
- with ESMTPS id 40Rqy70M1gz11VN for <lammich@in.tum.de>; Thu, 19 Apr 2018
- 22:16:31 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) by
- BADWLRZ-SWMBX08.ads.mwn.de (2001:4ca0:0:108::164) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Thu, 19 Apr 2018 22:16:29 +0200
-Received: from BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c]) by
- BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c%12]) with mapi id
- 15.01.1466.003; Thu, 19 Apr 2018 22:16:29 +0200
-From: "Elbadramany, Omar Adel Farouk Moussa" <omar.badramany@tum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: FDS: Hausaufgabe 1
-Thread-Topic: Hausaufgabe 1
-Thread-Index: AQHT2Bs747UG6cCQBkKcPjlEMkVZag==
-Date: Thu, 19 Apr 2018 20:16:29 +0000
-Message-ID: <b638bbae24e14aaca254f80f47988929@tum.de>
-Accept-Language: en-US
-Content-Language: en-US
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX09.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [77.47.96.248]
-Content-Type: multipart/mixed; boundary="_004_b638bbae24e14aaca254f80f47988929tumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_b638bbae24e14aaca254f80f47988929tumde_
-Content-Type: multipart/alternative; boundary="_000_b638bbae24e14aaca254f80f47988929tumde_"
-
-
---_000_b638bbae24e14aaca254f80f47988929tumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Sehr geehrter Herr Lammich,
-
-ich habe versucht die Hausaufgabe auf der gegebenen Webseite hochzuladen aber es gibt leider kein Link fr die Vorlesung Funktionale Datenstrukturen.
-Anbei finden Sie meine Lsung.
-
-Viele Gre,
-Omar
-
---_000_b638bbae24e14aaca254f80f47988929tumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-Sehr geehrter Herr Lammich,
-<div><br>
-</div>
-<div>ich habe versucht die Hausaufgabe auf der gegebenen Webseite hochzuladen aber es gibt leider kein Link fr die Vorlesung Funktionale Datenstrukturen.</div>
-<div>Anbei finden Sie meine Lsung.</div>
-<div><br>
-</div>
-<div>Viele Gre,</div>
-<div>Omar</div>
-</div>
-</body>
-</html>
-
---_000_b638bbae24e14aaca254f80f47988929tumde_--
-
---_004_b638bbae24e14aaca254f80f47988929tumde_
-Content-Type: application/octet-stream; name="hw01.thy"
-Content-Description: hw01.thy
-Content-Disposition: attachment; filename="hw01.thy"; size=901; creation-date="Thu, 19 Apr 2018 20:15:55 GMT"; modification-date="Thu, 19 Apr 2018 20:15:55 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGh3MDEKaW1wb3J0cyBNYWluCmJlZ2luCgpmdW4gbGlzdHN1bSA6OiAiaW50IGxpc3Qg
-XDxSaWdodGFycm93PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gW10gPSAoMDo6aW50KSIKfCAibGlz
-dHN1bSAoeCN4cykgPSB4ICsgKGxpc3RzdW0geHMpIgoKdmFsdWUgImxpc3RzdW0gWzEsMiwzXSIK
-dmFsdWUgImxpc3RzdW0gW10iCnZhbHVlICJsaXN0c3VtIFsxLC0yLDNdIgoKbGVtbWEgbGlzdHN1
-bV9maWx0ZXJfeiA6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRhPnguIHggXDxub3RlcT4gMCkg
-bCkgPSBsaXN0c3VtIGwiCiAgYXBwbHkgKGluZHVjdGlvbiBsKQogIGFwcGx5IGF1dG8KICBkb25l
-CgpsZW1tYSBhdXggOiAibGlzdHN1bSAoeHNAeXMpID0gbGlzdHN1bSB4cyArIGxpc3RzdW0geXMi
-CiAgYXBwbHkgKGluZHVjdGlvbiB4cykKICBhcHBseSBhdXRvCiAgZG9uZQogIApsZW1tYSBsaXN0
-c3VtX3JldiA6ICJsaXN0c3VtIChyZXYgeHMpID0gbGlzdHN1bSB4cyIKICBhcHBseSAoaW5kdWN0
-aW9uIHhzKQogIGFwcGx5IChhdXRvIHNpbXA6IGF1eCkKICBkb25lCgpsZW1tYSB0IDogImxpc3Rz
-dW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geCA+IDApIHhzKSBcPGdlPiBsaXN0c3VtIHhzICIKICBh
-cHBseSAoaW5kdWN0aW9uIHhzKQogIGFwcGx5IGF1dG8KICBkb25lCgpmdW4gZmxhdHRlbiA6OiAi
-J2EgbGlzdCBsaXN0IFw8UmlnaHRhcnJvdz4gJ2EgbGlzdCAiIHdoZXJlIAogICJmbGF0dGVuIFtd
-ID0gW10iCnwgImZsYXR0ZW4gKHgjeHMpID0geEAoZmxhdHRlbiB4cykiCgpsZW1tYSAibGlzdHN1
-bSAoZmxhdHRlbiB4cykgPSBsaXN0c3VtIChtYXAgbGlzdHN1bSB4cykiCiAgYXBwbHkgKGluZHVj
-dGlvbiB4cykKICBhcHBseSAoYXV0byBzaW1wIDogYXV4KQogIGRvbmUKCmVuZA==
-
---_004_b638bbae24e14aaca254f80f47988929tumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/s.griebel@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-From s.griebel@tum.de Fri Apr 20 10:03:28 2018
-Return-Path: <s.griebel@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- TKAGMoye2VozXwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:03:28 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id D16831C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:03:28 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id CFD601E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:03:28
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- CD43C1C038B; Fri, 20 Apr 2018 10:03:28 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id CADC71C038A; Fri, 20 Apr 2018 10:03:28 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id A70021C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:03:28 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 9BF991C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:03:28 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 9AAEC1C2DAB; Fri, 20 Apr 2018 10:03:28 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.2 required=7.0 tests=AWL,BAYES_00,HTML_MESSAGE,
- RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id EFEA71C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:03:25 +0200 (CEST)
-Received: from forwout2.mail.lrz.de (forwout2.mail.lrz.de
- [129.187.255.131]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id E502D1C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:03:25 +0200 (CEST)
-Received: from postforw1.mail.lrz.de (lxmhs61.srv.lrz.de
- [IPv6:2001:4ca0:0:116::a9c:63d]) by forwout2.mail.lrz.de (Postfix) with
- ESMTP id 40S7dn622lzTb for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:03:25
- +0200 (CEST)
-Received: from BADWLRZ-SWMBB05.ads.mwn.de (BADWLRZ-SWMBB05.ads.mwn.de
- [10.156.54.156]) by postforw1.mail.lrz.de (Postfix) with ESMTP id
- 40S7dn5tdFzydV for <ga57nid@exchwl.mytum.de>; Fri, 20 Apr 2018 10:03:25
- +0200 (CEST)
-Received: from BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) by
- BADWLRZ-SWMBB05.ads.mwn.de (2001:4ca0:0:108::156) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Fri, 20 Apr 2018 10:03:24 +0200
-Received: from BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c]) by
- BADWLRZ-SWMBX01.ads.mwn.de ([fe80::7d02:f283:edbd:b19c%12]) with mapi id
- 15.01.1466.003; Fri, 20 Apr 2018 10:03:24 +0200
-From: "Griebel, Simon" <s.griebel@tum.de>
-To: "Lammich, Peter" <peter.lammich@tum.de>
-Subject: [FDS-Homework] Solution Ex. 1 Simon Griebel
-Thread-Topic: [FDS-Homework] Solution Ex. 1 Simon Griebel
-Thread-Index: AQHT2H4O0nMyF0BsFk2xEnrWTm0pNQ==
-Date: Fri, 20 Apr 2018 08:03:24 +0000
-Message-ID: <3ccc8a6942bf4f12ac9b8e400a6b66da@tum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [2001:4ca0:2fff:1::5f]
-Content-Type: multipart/mixed; boundary="_004_3ccc8a6942bf4f12ac9b8e400a6b66datumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_3ccc8a6942bf4f12ac9b8e400a6b66datumde_
-Content-Type: multipart/alternative; boundary="_000_3ccc8a6942bf4f12ac9b8e400a6b66datumde_"
-
-
---_000_3ccc8a6942bf4f12ac9b8e400a6b66datumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Hallo Peter,
-
-anbei befindet sich meine Lsung zur ersten Hausaufgabe.
-
-
-Gre,
-
-Simon Griebel
-
-
-
---_000_3ccc8a6942bf4f12ac9b8e400a6b66datumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
-<p>Hallo Peter,</p>
-<p>anbei befindet sich meine Lsung zur ersten Hausaufgabe.</p>
-<p><br>
-</p>
-<p>Gre,</p>
-<p>Simon Griebel<br>
-</p>
-<p><br>
-</p>
-<p><br>
-</p>
-</div>
-</body>
-</html>
-
---_000_3ccc8a6942bf4f12ac9b8e400a6b66datumde_--
-
---_004_3ccc8a6942bf4f12ac9b8e400a6b66datumde_
-Content-Type: application/octet-stream; name="homework_1.thy"
-Content-Description: homework_1.thy
-Content-Disposition: attachment; filename="homework_1.thy"; size=1079; creation-date="Fri, 20 Apr 2018 07:57:14 GMT"; modification-date="Fri, 20 Apr 2018 07:57:14 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGhvbWV3b3JrXzEKICBpbXBvcnRzIE1haW4KYmVnaW4KCmZ1biBsaXN0c3VtIDo6ICJp
-bnQgbGlzdCBcPFJpZ2h0YXJyb3c+IGludCIgd2hlcmUKICAibGlzdHN1bSBbXSA9IDAiCnwgImxp
-c3RzdW0gKHgjeHMpID0geCArIChsaXN0c3VtIHhzKSIKCgp2YWx1ZSAibGlzdHN1bSBbMSwgMiwg
-M10gPSA2Igp2YWx1ZSAibGlzdHN1bSBbXSA9IDAiCnZhbHVlICJsaXN0c3VtIFsxLCAtMiwgM10g
-PSAyIgoKCmxlbW1hIGxpc3RzdW1fZmlsdGVyX3o6ICJsaXN0c3VtIChmaWx0ZXIgKFw8bGFtYmRh
-PnguIHggXDxub3RlcT4gMCkgbCkgPSBsaXN0c3VtIGwiCiAgYXBwbHkoaW5kdWN0aW9uIGwpCiAg
-IGFwcGx5KGF1dG8pCiAgZG9uZQoKbGVtbWEgbGlzdHN1bV9hcHBlbmQgOiAibGlzdHN1bSAoeHNA
-eXMpID0gbGlzdHN1bSB4cyArIGxpc3RzdW0geXMiCiAgYXBwbHkoaW5kdWN0aW9uIHhzKQogICBh
-cHBseShhdXRvKQogIGRvbmUKCmxlbW1hIGxpc3RzdW1fcmV2OiAibGlzdHN1bSAocmV2IHhzKSA9
-IGxpc3RzdW0geHMiCiAgYXBwbHkoaW5kdWN0aW9uIHhzKQogICBhcHBseShhdXRvIHNpbXA6IGxp
-c3RzdW1fYXBwZW5kKQogIGRvbmUKICAKbGVtbWEgbGlzdHN1bV9maWx0ZXJfbmVnOiAibGlzdHN1
-bSAoZmlsdGVyIChcPGxhbWJkYT4geC4geCBcPGdlPiAwKSBsKSBcPGdlPiBsaXN0c3VtIGwiCiAg
-YXBwbHkoaW5kdWN0aW9uIGwpCiAgIGFwcGx5KGF1dG8pCiAgZG9uZQoKZnVuIGZsYXR0ZW46OiAi
-J2EgbGlzdCBsaXN0IFw8UmlnaHRhcnJvdz4gJ2EgbGlzdCIgd2hlcmUKICAiZmxhdHRlbiBbXSA9
-IFtdIgp8ICJmbGF0dGVuIChsI2xzKSA9IGwgQCBmbGF0dGVuIGxzIgoKdmFsdWUgImZsYXR0ZW4g
-W1sxICwyICwzIF0sWzIgXV0gPSBbMSAsMiAsMyAsMiA6OmludF0iCnZhbHVlICJmbGF0dGVuIFtb
-MSAsMiAsMyBdLFtdLFsyIF1dID0gWzEgLDIgLDMgLDIgOjppbnRdIgoKbGVtbWEgImxpc3RzdW0g
-KGZsYXR0ZW4geHMpID0gbGlzdHN1bSAobWFwIGxpc3RzdW0geHMpIgogIGFwcGx5KGluZHVjdGlv
-biB4cykKICAgYXBwbHkoYXV0byBzaW1wOiBsaXN0c3VtX2FwcGVuZCkKICBkb25lCgplbmQ=
-
---_004_3ccc8a6942bf4f12ac9b8e400a6b66datumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/sabine.rieder@tum.de	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-From sabine.rieder@tum.de Fri Apr 20 10:38:22 2018
-Return-Path: <sabine.rieder@tum.de>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- 21ttCfal2VrGUwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 10:38:22 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 3F0881C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 10:38:22 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 3D8F01E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 10:38:22
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 3AD621C038B; Fri, 20 Apr 2018 10:38:22 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 37B8F1C038A; Fri, 20 Apr 2018 10:38:22 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 1387C1C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:22 +0200
- (CEST)
-Received: from vmmaildmz2.informatik.tu-muenchen.de
- (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 088AD1C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:22 +0200 (CEST)
-Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 06C4C1C24B7; Fri, 20 Apr 2018 10:38:21 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz2.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-4.3 required=7.0 tests=BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_MED autolearn=no
- autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 48ABF1C24B4
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:20 +0200 (CEST)
-Received: from postout2.mail.lrz.de (postout2.mail.lrz.de
- [129.187.255.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256
- bits)) (No client certificate requested) by
- vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id 3DA461C24AD
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:20 +0200 (CEST)
-Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by
- postout2.mail.lrz.de (Postfix) with ESMTP id 40S8Q41Q7HzygM for
- <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:20 +0200 (CEST)
-Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit
- key) reason="pass (just generated, assumed good)" header.d=tum.de
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h=
- mime-version:content-type:content-type:content-language
- :accept-language:message-id:date:date:subject:subject:from:from
- :received:received:received:received; s=postout; t=1524213499;
- bh=8m/2ysAriPk6B7XKF9NSB8tOT7cK5Bdgjb3ZK8QU/CA=; b=IekhLxpDgkK+
- uvV/Yf5VOQJDQErR2WV+JWxvSr9OiQ6OQhq8uU04ZpUckWQxMOsqc3zf/yVGjahA
- wnnZpTFaru9fIzYA4HwzEF1p3HwzyGzpgPH8VMmsTXikpymXqNIskIBBi4qVv8FN
- gwa+lsI43m+7tKmcGXlh6+aUc51ZbVJqDgKi8qO1qQC49V+eSZYA0d0eSi/1xrse
- wIKbWqTCPUt7chZepxsmvsgqhXTfNE7DpQ7ldQweF2VsjpZ6bpRjvnAwjS9J3U82
- MAZLEkKBqI4tgKEW/NV52j1MSqyZtCPPgRc5+RpHc6zePKayiZZE5Afxw1w/0oAq
- icPmN2uL2g==
-X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
-Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de
- (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id
- LR70hxbOGEDr for <lammich@in.tum.de>; Fri, 20 Apr 2018 10:38:19 +0200 (CEST)
-Received: from BADWLRZ-SWMBX07.ads.mwn.de (BADWLRZ-SWMBX07.ads.mwn.de
- [IPv6:2001:4ca0:0:108::163]) (using TLSv1.2 with cipher
- ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "BADWLRZ-SWMBX07",
- Issuer "BADWLRZ-SWMBX07" (not verified)) by postout2.mail.lrz.de (Postfix)
- with ESMTPS id 40S8Q36v3Sz11Sr for <lammich@in.tum.de>; Fri, 20 Apr 2018
- 10:38:19 +0200 (CEST)
-Received: from BADWLRZ-SWMBX09.ads.mwn.de (2001:4ca0:0:108::165) by
- BADWLRZ-SWMBX07.ads.mwn.de (2001:4ca0:0:108::163) with Microsoft SMTP
- Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
- id 15.1.1466.3; Fri, 20 Apr 2018 10:38:18 +0200
-Received: from BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c]) by
- BADWLRZ-SWMBX09.ads.mwn.de ([fe80::28c9:20b8:a4d6:473c%12]) with mapi id
- 15.01.1466.003; Fri, 20 Apr 2018 10:38:18 +0200
-From: "Rieder, Sabine" <sabine.rieder@tum.de>
-To: "lammich@in.tum.de" <lammich@in.tum.de>
-Subject: [FDS-Homework]
-Thread-Topic: [FDS-Homework]
-Thread-Index: AQHT2IIkqYhIPY2qi0GINJCTB/9WOg==
-Date: Fri, 20 Apr 2018 08:38:18 +0000
-Message-ID: <baa471b5f7384579a95a81f65e405cd8@tum.de>
-Accept-Language: de-DE, en-US
-Content-Language: de-DE
-X-MS-Exchange-Organization-AuthAs: Internal
-X-MS-Exchange-Organization-AuthMechanism: 04
-X-MS-Exchange-Organization-AuthSource: BADWLRZ-SWMBX09.ads.mwn.de
-X-MS-Has-Attach: yes
-X-MS-TNEF-Correlator: 
-x-originating-ip: [131.159.201.175]
-Content-Type: multipart/mixed; boundary="_004_baa471b5f7384579a95a81f65e405cd8tumde_"
-MIME-Version: 1.0
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---_004_baa471b5f7384579a95a81f65e405cd8tumde_
-Content-Type: multipart/alternative; boundary="_000_baa471b5f7384579a95a81f65e405cd8tumde_"
-
-
---_000_baa471b5f7384579a95a81f65e405cd8tumde_
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-Dear Dr. Lammich,
-Attached you can find my homework for week 1.
-
-Best regards,
-Sabine Rieder
-
-
---_000_baa471b5f7384579a95a81f65e405cd8tumde_
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
-</head>
-<body dir="ltr">
-<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, &quot;EmojiFont&quot;, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, NotoColorEmoji, &quot;Segoe UI Symbol&quot;, &quot;Android Emoji&quot;, EmojiSymbols;">
-<p></p>
-<div>
-<p class="MsoNormal"><span style="mso-ansi-language:EN-GB" lang="EN-GB">Dear Dr. Lammich,</span></p>
-<p class="MsoNormal"><span style="mso-ansi-language:EN-GB" lang="EN-GB">Attached you can find my homework for week 1.</span></p>
-<p class="MsoNormal"><span style="mso-ansi-language:EN-GB" lang="EN-GB"><br>
-</span></p>
-<p class="MsoNormal"><span style="mso-ansi-language:EN-GB" lang="EN-GB">Best regards,</span></p>
-<p class="MsoNormal"><span style="mso-ansi-language:EN-GB" lang="EN-GB">Sabine Rieder</span></p>
-</div>
-<p><br>
-</p>
-</div>
-</body>
-</html>
-
---_000_baa471b5f7384579a95a81f65e405cd8tumde_--
-
---_004_baa471b5f7384579a95a81f65e405cd8tumde_
-Content-Type: application/octet-stream; name="hw01.thy"
-Content-Description: hw01.thy
-Content-Disposition: attachment; filename="hw01.thy"; size=1297; creation-date="Fri, 20 Apr 2018 08:36:24 GMT"; modification-date="Fri, 20 Apr 2018 08:36:24 GMT"
-Content-Transfer-Encoding: base64
-
-dGhlb3J5IGh3MDEKICBpbXBvcnRzIE1haW4KCmJlZ2luCmZ1biBsaXN0c3VtIDo6ICJpbnQgbGlz
-dCA9PiBpbnQiIHdoZXJlCiAgImxpc3RzdW0gKE5pbCkgPSAwIiB8CiAgImxpc3RzdW0gKHggIyB4
-cykgPSB4ICsgKGxpc3RzdW0geHMpIgoKdmFsdWUgImxpc3RzdW0gWzEgLDIgLDMgXSA9IDYiCmxl
-bW1hICJsaXN0c3VtIFsxICwyICwzIF0gPSA2IiBieSBzaW1wCgp2YWx1ZSAibGlzdHN1bSBbXSA9
-IDAiCmxlbW1hICJsaXN0c3VtIFtdID0gMCIgYnkgc2ltcAoKdmFsdWUgImxpc3RzdW0gWzEgLC0y
-ICwzIF0gPSAyIgpsZW1tYSAibGlzdHN1bSBbMSwgLTIsIDNdID0gMiIgYnkgc2ltcAoKbGVtbWEg
-bGlzdHN1bV9maWx0ZXJfejogImxpc3RzdW0gKGZpbHRlciAoXDxsYW1iZGE+eC4geCBcPG5vdGVx
-PjAgKSBsICkgPSBsaXN0c3VtIGwiCiAgYXBwbHkoaW5kdWN0aW9uIGwpCiAgYXBwbHkgYXV0bwog
-IGRvbmUKCmxlbW1hIGxpc3RzdW1fYXBwW3NpbXBdOiAibGlzdHN1bSAoeHMgQCB5cykgPSBsaXN0
-c3VtIHlzICArIGxpc3RzdW0geHMiCiAgYXBwbHkoaW5kdWN0aW9uIHhzIGFyYml0cmFyeTogeXMp
-CiAgYXBwbHkoYXV0bykKICBkb25lCgpsZW1tYSBsaXN0c3VtX3JldltzaW1wXTogImxpc3RzdW0g
-KHJldiB4cykgPSBsaXN0c3VtIHhzIgogIGFwcGx5KGluZHVjdGlvbiB4cykKICBhcHBseShhdXRv
-KQogIGRvbmUKCmxlbW1hIGxpc3RzdW1fZmlsdGVyX25lZyA6ICJsaXN0c3VtIChmaWx0ZXIgKFw8
-bGFtYmRhPnguIHggXDxnZT4gMCApIGwgKSBcPGdlPiBsaXN0c3VtIGwiCiAgYXBwbHkoaW5kdWN0
-aW9uIGwpCiAgYXBwbHkoYXV0bykKICBkb25lCgpmdW4gZmxhdHRlbiA6OiAiJ2EgbGlzdCBsaXN0
-IFw8UmlnaHRhcnJvdz4gICdhIGxpc3QiIHdoZXJlCiAgImZsYXR0ZW4gW10gPSBbXSIgfAogICJm
-bGF0dGVuIChsI2xzKSA9IGwgQCAoZmxhdHRlbiBscykiCgp2YWx1ZSAiZmxhdHRlbiBbWzEgLDIg
-LDMgXSxbMiBdXSA9IFsxICwyICwzICwyIDo6aW50XSIKbGVtbWEgImZsYXR0ZW4gW1sxICwyICwz
-IF0sWzIgXV0gPSBbMSAsMiAsMyAsMiA6OmludF0iIGJ5IHNpbXAKCnZhbHVlICJmbGF0dGVuIFtb
-MSAsMiAsMyBdLFtdLFsyIF1dID0gWzEgLDIgLDMgLDIgOjppbnRdIgpsZW1tYSAiZmxhdHRlbiBb
-WzEgLDIgLDMgXSxbXSxbMiBdXSA9IFsxICwyICwzICwyIDo6aW50XSIgYnkgc2ltcAoKCmxlbW1h
-ICJsaXN0c3VtIChmbGF0dGVuIHhzKSA9IGxpc3RzdW0gKG1hcCBsaXN0c3VtIHhzKSIKICBhcHBs
-eShpbmR1Y3Rpb24geHMpCiAgYXBwbHkoYXV0bykKICBkb25lCgoKZW5kCg==
-
---_004_baa471b5f7384579a95a81f65e405cd8tumde_--
-
--- a/SS18/Exercises/hwsubm/hw01/extracted/smith.nickh@gmail.com	Fri Jun 01 10:20:03 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-From smith.nickh@gmail.com Fri Apr 20 09:52:31 2018
-Return-Path: <smith.nickh@gmail.com>
-Delivered-To: <lammich@mailstore.informatik.tu-muenchen.de>
-Received: from vmmailstore1.informatik.tu-muenchen.de by
- vmmailstore1.informatik.tu-muenchen.de (Dovecot) with LMTP id
- e5TbODWc2VqXOwAArPjJig for <lammich@mailstore.informatik.tu-muenchen.de>;
- Fri, 20 Apr 2018 09:52:31 +0200
-Received: from vmmailproxy1.informatik.tu-muenchen.de
- (vmmailproxy1.informatik.tu-muenchen.de [131.159.0.83]) by
- vmmailstore1.informatik.tu-muenchen.de (Postfix) with ESMTP id 734D31C108A
- for <lammich@mailstore.informatik.tu-muenchen.de>; Fri, 20 Apr 2018
- 09:52:31 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de
- (mailrelay1.informatik.tu-muenchen.de [131.159.254.14]) by
- vmmailproxy1.informatik.tu-muenchen.de (Postfix) with ESMTP id 7204D1E0125
- for <lammich@mail.informatik.tu-muenchen.de>; Fri, 20 Apr 2018 09:52:31
- +0200 (CEST)
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix) id
- 6E3081C0376; Fri, 20 Apr 2018 09:52:31 +0200 (CEST)
-Delivered-To: peter.lammich@informatik.tu-muenchen.de
-Received: by vmmailrelay1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 692E21C038A; Fri, 20 Apr 2018 09:52:31 +0200 (CEST)
-Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost
- [127.0.0.1]) by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP
- id 3E7A01C0378 for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:31 +0200
- (CEST)
-Received: from vmmaildmz1.informatik.tu-muenchen.de
- (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87]) by
- vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 33E841C0376
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:31 +0200 (CEST)
-Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid
- 109) id 324F51C2DAA; Fri, 20 Apr 2018 09:52:31 +0200 (CEST)
-X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
- vmmaildmz1.informatik.tu-muenchen.de
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.0 required=7.0 tests=AWL,BAYES_00,DKIM_SIGNED,
- DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,
- RCVD_IN_MSPIKE_H2 autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
-Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
- by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 8C5551C2DA9
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:28 +0200 (CEST)
-Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com
- [209.85.128.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256
- (128/128 bits)) (No client certificate requested) by
- vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 715121C2D9F
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 09:52:28 +0200 (CEST)
-Received: by mail-wr0-f181.google.com with SMTP id u11-v6so20368573wri.12
- for <lammich@in.tum.de>; Fri, 20 Apr 2018 00:52:28 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
- s=20161025; h=mime-version:from:date:message-id:subject:to;
- bh=Hd8Q1SxbWxtkW6AKW6jOcmtASJFKs1b325FkiEPYo3E=;
- b=qZ/MUESEiH9Ja/NMH//3TiOi23FluWY7yt4HOPG8EfWwoUsVTMW6xhcrh5VVFlKqkm
- X+KbA3Ay6O5SnpfMtVOuSitOItbfE4TtBnzI40MtalhWZ5o0r0vI4vF/Dy84q/HRf3bN
- +rEq4h62SjnnBUJAQM2Fc4Ot50Z/U5v4hnVjNi09TnCmYdj3FN/1Y7fSgLelknAwa6/+
- 9F0QMt6ojiU/wro9HAg4K1lgv6qXWYn76UeaRdqJ4KaKTONnakcx34DaBt0ahc1wkvrQ
- 0ksH3zkIAnkIiM1cW8RqbhOzmebhELRbUv6/aMFM50fvUBOKw7Uc2/p9RtuQ/bIKsqfW tIYA==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
- s=20161025;
- h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
- bh=Hd8Q1SxbWxtkW6AKW6jOcmtASJFKs1b325FkiEPYo3E=;
- b=MhT/rR2MtWuXhayv5YzwS9dOYdwG0r9XgnXih3U8yu0Q4bu4imYYaz6BMf0Btjt1Bx
- xzgP9e5by956IPj0nRokkdU/Ep7m096uUCwjdSxGeQkpwye0WXFcNu9H0NKWYU518LdB
- RdwcjUdt+z2Q37fbSvTBfywmPjaO1R3tm5NOC2Xtu2cwuiwzasoy5VLK53OuKdzD0lZ1
- 0RxlPpo50ql9Oo+QrH0vAQGhlnbpwv0pR/nD5qo4wL8xUHfY/UH+aFh+FFIUa+DpSptJ
- DqSkmEUJAjwnj0veZSMh4nlG7xARMyUT5LvgYb/LnGiqekATJdU+WfIbBFvGRFoWLtwi Xwog==
-X-Gm-Message-State:
- ALQs6tB0oX+vqvBJ9ErIbz2gqGPpdPUtFnVbXSlrbhEvUjf1UuFA4ETc
- XuRa5aaOlRqVICTUl7di/kgRtsjWuqNcey3kWhw=
-X-Google-Smtp-Source:
- AIpwx49KCPfQbSdxt4LAcK89PcqK6ek48aJcpurMRQZuhmeKb13SDsxZ6YMcGUkHkAep+PLx0IqLQDQJEjlhXutfIfk=
-X-Received: by 10.28.58.81 with SMTP id h78mr1082143wma.110.1524210747485;
- Fri, 20 Apr 2018 00:52:27 -0700 (PDT)
-MIME-Version: 1.0
-Received: by 10.223.128.9 with HTTP; Fri, 20 Apr 2018 00:52:06 -0700 (PDT)
-From: Nicholas Smith <smith.nickh@gmail.com>
-Date: Fri, 20 Apr 2018 09:52:06 +0200
-Message-ID: <CALgGdVFb-o9XByc7aQDbWr08YnpYnmoRRXb41fTyLcMtLJyjSg@mail.gmail.com>
-Subject: [FDS-Homework]
-To: Peter Lammich <lammich@in.tum.de>
-Content-Type: multipart/mixed; boundary="001a1148d7082aee9e056a42f823"
-X-Evolution-Source: 1479990504.8344.16@lapnipkow10
-
-
---001a1148d7082aee9e056a42f823
-Content-Type: multipart/alternative; boundary="001a1148d7082aee9c056a42f821"
-
-
---001a1148d7082aee9c056a42f821
-Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-Attached is my homework for HW1.
-Thanks
-
--- 
-Nicholas Smith
-(310) 291-0777
-
---001a1148d7082aee9c056a42f821
-Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
-
-<div dir="ltr">Attached is my homework for HW1.<div>Thanks<br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Nicholas Smith<br>(310) 291-0777</div>
-</div></div>
-
---001a1148d7082aee9c056a42f821--
-
---001a1148d7082aee9e056a42f823
-Content-Type: application/octet-stream; name="HW1.thy"
-Content-Disposition: attachment; filename="HW1.thy"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: f_jg7npmt00
-
-dGhlb3J5IEhXMQppbXBvcnRzIE1haW4KYmVnaW4KCmZ1biBsaXN0c3VtIDo6ICJpbnQgbGlzdCBc
-PFJpZ2h0YXJyb3c+IGludCIgd2hlcmUKICAiIGxpc3RzdW0gW10gPSAoMCA6OiBpbnQpICIgfAog
-ICIgbGlzdHN1bSAoeCN4cykgPSAgKHg6OiBpbnQpICsgKGxpc3RzdW0geHMpICIKCgoKdmFsdWUg
-Imxpc3RzdW0gWzEsMiwzXSIKdmFsdWUgImxpc3RzdW0gW10iCnZhbHVlICJsaXN0c3VtIFsxLC0y
-LDNdIgp2YWx1ZSAiWzM6Om5hdF0gQCBbMSwyXSIKCmxlbW1hIGxpc3RzdW1fZmlsdGVyX3ogOiJs
-aXN0c3VtIChmaWx0ZXIoIFw8bGFtYmRhPnguIHggXDxub3RlcT4gMCkgbCkgPSBsaXN0c3VtIGwi
-CiAgYXBwbHkgKGluZHVjdGlvbiBsKSAgICAKICBhcHBseSAoYXV0bykKICBkb25lCgpsZW1tYSBs
-aXN0c3VtX3Jldl9BVVg6ICJsaXN0c3VtKHhzIEAgW3hdKSA9IGxpc3RzdW0oeHMpICsgeCIKICBh
-cHBseSAoaW5kdWN0aW9uIHhzKSAgIAogIGFwcGx5IChhdXRvKQogIGRvbmUKCmxlbW1hIGxpc3Rz
-dW1fcmV2OiAibGlzdHN1bSAocmV2IGxzKSA9IGxpc3RzdW0gbHMiCiAgYXBwbHkgKGluZHVjdGlv
-biBscykKICBhcHBseSAoYXV0byBzaW1wOiBsaXN0c3VtX3Jldl9BVVgpCiAgZG9uZQoKbGVtbWEg
-bmVnbnVtX2ZpbHRlcjogImxpc3RzdW0oZmlsdGVyKCBcPGxhbWJkYT54LiB4IDwgMCkgbCApIFw8
-bGU+IGxpc3RzdW0obCkiCiAgYXBwbHkgKGluZHVjdGlvbiBsKQogIGFwcGx5IChhdXRvKQogIGRv
-bmUKCmZ1biBmbGF0dGVuIDo6ICInYSBsaXN0IGxpc3QgXDxSaWdodGFycm93PiAnYSBsaXN0IiB3
-aGVyZQogICJmbGF0dGVuIFtdID0gW10iIHwKICAiZmxhdHRlbiAobCNscykgPSBsIEAgKGZsYXR0
-ZW4gbHMpICIKCnZhbHVlICIgZmxhdHRlbiAoW1sxLDIsM10sWzQsNV1dIDo6IG5hdCBsaXN0IGxp
-c3QpIgp2YWx1ZSAiZmxhdHRlbiBbWzEsMiwzXSxbMiBdXSA9IFsxICwyLDMsMiA6OmludF0iCnZh
-bHVlICJtYXAgbGlzdHN1bSBbWzEsMiwzXSxbNV0sWzYsNyw4XV0iCgpsZW1tYSBsaXN0c3VtX0FV
-WFtzaW1wXTogImxpc3RzdW0gKHhzQHlzKSA9IGxpc3RzdW0oeHMpICsgbGlzdHN1bSh5cykiCiAg
-YXBwbHkgKGluZHVjdGlvbiB4cykKICBhcHBseSAoYXV0bykKICBkb25lCgpsZW1tYSBsaXN0c3Vt
-X3N1bTogIiBsaXN0c3VtKCBmbGF0dGVuIChscykgKSAgPSBsaXN0c3VtIChtYXAgbGlzdHN1bShs
-cykgKSIKICBhcHBseSAoaW5kdWN0aW9uIGxzKQogIGFwcGx5IChhdXRvKQogIGRvbmUKCmVuZA==
---001a1148d7082aee9e056a42f823--
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/SENTMAIL	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,1 @@
+ga53qud@mytum.de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/hw07.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,149 @@
+(** Score: 13/10
+
+  nice job
+*)
+
+theory hw07
+  imports Main
+begin
+
+hide_const (open) inv
+
+type_synonym intervals = "(nat*nat) list"
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"|
+  "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+fun set_of :: "intervals \<Rightarrow> nat set"
+where
+  "set_of [] = {}"|
+  "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+   "del x [] = []"
+|  "del x ((a,b)#lis) = (
+    if (x < a) then (a,b)#lis
+    else if (x = a \<and> x = b) then lis
+    else if (x = a) then ((a+1), b)#lis
+    else if (x < b) then (a,x-1)#(x+1,b)#lis
+    else if (x = b) then (a,b-1)#lis
+    else (a,b)#(del x lis))"
+
+value "del (12::nat) [(2,5),(7,7),(9,11)]"
+value "set_of [] - {1::nat}"
+
+lemma del_pres_inv: "n\<le>x \<Longrightarrow> inv' n itl \<Longrightarrow> inv' n (del x itl)"
+proof (induction itl arbitrary:n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a itl)
+  then show ?case
+    apply (cases a)
+    apply (cases itl)
+    apply auto
+    done
+qed
+
+lemma set_of_del:
+  assumes "n\<le>x"
+  assumes "inv' n itl"
+  shows "set_of (del x itl) =  set_of itl - {x}"
+  using assms
+proof (induction itl arbitrary:n)
+case Nil
+  then show ?case by auto
+next
+  case (Cons a itl)
+  then show ?case
+    apply (cases a)
+    apply (cases itl)
+     apply (auto split: if_splits)
+    apply (auto)
+    done
+qed
+
+
+lemma del_correct:
+  assumes "inv itl"
+  shows "inv (del x itl)" "set_of (del x itl) =  (set_of itl) - {x}"
+  using assms del_pres_inv hw07.inv_def apply fastforce
+  using assms hw07.inv_def set_of_del by fastforce
+
+
+
+
+
+
+
+
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i,j)]"|
+  "addi i j ((a,b)#lis) = (
+    if j + 1 < a then ((i,j)#(a,b)#lis)
+    else if j+1 = a then ((i,b)#lis)
+    else if j \<le> b then(
+      if i < a then ((i,b)#lis)
+      else ((a,b)#lis))
+    else (
+      if i < a then addi i j lis
+      else if i \<le> b+1 then addi a j lis
+      else ((a,b)#(addi i j lis)))
+    )"
+
+value "addi 5 99 [(2,5),(7,7),(9,11)]"
+
+lemma addi_pres_inv: "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n itl \<Longrightarrow> inv' n (addi i j itl)"
+proof (induction i j itl arbitrary:n rule:addi.induct)
+  case (1 i j)
+  then show ?case by auto
+next
+  case (2 i j a b itl)
+  then show ?case
+    apply(cases itl)
+     apply(auto)
+    done
+qed
+
+lemma set_of_addi:
+  assumes "n\<le>i" "i\<le>j"
+  assumes "inv' n itl"
+  shows "set_of (addi i j itl) = {i..j} \<union> set_of itl"
+  using assms
+proof (induction i j itl arbitrary:n rule:addi.induct)
+  case (1 i j)
+  then show ?case by auto
+next
+  case (2 i j a b lis)
+  then show ?case
+    apply(cases lis)
+     apply(cases a)
+      apply(cases b)
+       apply (auto split:if_splits)
+          apply fastforce
+         apply fastforce
+        apply fastforce
+       apply fastforce
+      apply fastforce
+     apply fastforce
+    apply fastforce
+    done
+qed
+
+lemma addi_correct:
+  assumes "inv is" "i\<le>j"
+  shows "inv (addi i j is)" "set_of (addi i j is) = {i..j} \<union> (set_of is)"
+  using addi_pres_inv assms hw07.inv_def zero_order(3) apply force
+  by (metis assms hw07.inv_def le0 set_of_addi)
+
+
+end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Das_Sharma_Amartya_ga53qud@mytum.de_457/user_error_log.txt	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,172 @@
+Using temporary directory '/tmp/tmp.Q6HsNTLFtc'
+Files in /tmp/eval-457-v2HWFt: hw07.thy
+Command  ['java', '-cp', '/jail/tumjudge-assembly.jar', 'TUMJudge', '/home/test-runner/local-storage']
+=================
+<submission>
+
+
+hide_const (open) inv
+
+type_synonym intervals = "(nat*nat) list"
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"|
+  "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+fun set_of :: "intervals \<Rightarrow> nat set"
+where
+  "set_of [] = {}"|
+  "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+   "del x [] = []"
+|  "del x ((a,b)#lis) = (
+    if (x < a) then (a,b)#lis
+    else if (x = a \<and> x = b) then lis
+    else if (x = a) then ((a+1), b)#lis
+    else if (x < b) then (a,x-1)#(x+1,b)#lis
+    else if (x = b) then (a,b-1)#lis
+    else (a,b)#(del x lis))"
+
+value "del (12::nat) [(2,5),(7,7),(9,11)]"
+value "set_of [] - {1::nat}"
+
+lemma del_pres_inv: "n\<le>x \<Longrightarrow> inv' n itl \<Longrightarrow> inv' n (del x itl)"
+proof (induction itl arbitrary:n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a itl)
+  then show ?case
+    apply (cases a)
+    apply (cases itl)
+    apply auto
+    done
+qed
+
+lemma set_of_del:
+  assumes "n\<le>x"
+  assumes "inv' n itl"
+  shows "set_of (del x itl) =  set_of itl - {x}"
+  using assms
+proof (induction itl arbitrary:n)
+case Nil
+  then show ?case by auto
+next
+  case (Cons a itl)
+  then show ?case 
+    apply (cases a)
+    apply (cases itl)
+     apply (auto split: if_splits)
+    apply (auto)
+    done
+qed
+
+
+lemma del_correct:
+  assumes "inv itl"
+  shows "inv (del x itl)" "set_of (del x itl) =  (set_of itl) - {x}"
+  using assms del_pres_inv hw07.inv_def apply fastforce
+  using assms hw07.inv_def set_of_del by fastforce
+
+
+
+
+
+
+
+
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i,j)]"|
+  "addi i j ((a,b)#lis) = (
+    if j + 1 < a then ((i,j)#(a,b)#lis)
+    else if j+1 = a then ((i,b)#lis)
+    else if j \<le> b then(
+      if i < a then ((i,b)#lis)
+      else ((a,b)#lis))
+    else (
+      if i < a then addi i j lis
+      else if i \<le> b+1 then addi a j lis
+      else ((a,b)#(addi i j lis)))
+    )"
+
+value "addi 5 99 [(2,5),(7,7),(9,11)]"
+
+lemma addi_pres_inv: "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n itl \<Longrightarrow> inv' n (addi i j itl)"
+proof (induction i j itl arbitrary:n rule:addi.induct)
+  case (1 i j)
+  then show ?case by auto
+next
+  case (2 i j a b itl)
+  then show ?case
+    apply(cases itl)
+     apply(auto)
+    done
+qed
+
+lemma set_of_addi:
+  assumes "n\<le>i" "i\<le>j"
+  assumes "inv' n itl"
+  shows "set_of (addi i j itl) = {i..j} \<union> set_of itl"
+  using assms
+proof (induction i j itl arbitrary:n rule:addi.induct)
+  case (1 i j)
+  then show ?case by auto
+next
+  case (2 i j a b lis)
+  then show ?case
+    apply(cases lis)
+     apply(cases a)
+      apply(cases b)
+       apply (auto split:if_splits)
+          apply fastforce
+         apply fastforce
+        apply fastforce
+       apply fastforce
+      apply fastforce
+     apply fastforce
+    apply fastforce
+    done
+qed
+
+lemma addi_correct:
+  assumes "inv is" "i\<le>j"
+  shows "inv (addi i j is)" "set_of (addi i j is) = {i..j} \<union> (set_of is)"
+  using addi_pres_inv assms hw07.inv_def zero_order(3) apply force
+  by (metis assms hw07.inv_def le0 set_of_addi)
+</submission>
+<check>
+
+</check>
+<submission-imports>
+
+</submission-imports>
+<version>
+2016-1
+</version>
+<check-imports>
+Submission
+</check-imports>
+<defs>
+
+
+save_test_theory
+</defs>
+<image>
+HOL-Library
+</image>
+<defs-imports>
+Main Tree
+</defs-imports>
+=================
+Failed to load submission in Isabelle!
+Test case check_build:	Failed
+Runner terminated with exit code 1.
+Test execution terminated with exit code 1.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/SENTMAIL	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,1 @@
+j.gottfriedsen@tum.de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/homework07.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,351 @@
+(** Score: 13/10
+
+  nice job
+*)
+(*<*)
+theory homework07
+  imports Main "HOL-Data_Structures.Sorting"
+begin
+(*>*)
+
+
+text {* \ExerciseSheet{7}{25.~5.~2018} *}
+
+
+text {* \Exercise{Interval Lists}
+
+ Sets of natural numbers can be implemented as lists of intervals, where
+an interval is simply a pair of numbers.  For example the set @{term "{2, 3, 5,
+7, 8, 9::nat}"} can be represented by the list @{term "[(2, 3), (5, 5),
+(7::nat, 9::nat)]"}.  A typical application is the list of free blocks of
+dynamically allocated memory. *}
+
+text {* We introduce the type *}
+
+type_synonym intervals = "(nat*nat) list"
+
+text {* Next, define an \emph{invariant}
+that characterizes valid interval lists:
+For efficiency reasons intervals should be sorted in ascending order, the lower
+bound of each interval should be less than or equal to the upper bound, and the
+intervals should be chosen as large as possible, i.e.\ no two adjacent
+intervals should overlap or even touch each other.  It turns out to be
+convenient to define @{term inv} in terms of a more general function
+such that the additional argument is a lower bound for the intervals in
+the list:*}
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"
+| "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+
+text {* To relate intervals back to sets define an \emph{abstraction function}*}
+
+fun set_of :: "intervals => nat set"
+where
+  "set_of [] = {}"
+| "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+text \<open>Define a function to add a single element to the interval list,
+  and show its correctness\<close>
+
+
+fun merge_aux where
+  "merge_aux a b [] = [(a,b)]"
+| "merge_aux a b ((c,d)#ivs) = (if b+1=c then (a,d)#ivs else (a,b)#(c,d)#ivs)"
+
+fun add :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+  "add i [] = [(i,i)]"
+| "add i ((a,b)#ivs) = (
+    if i+1 < a then (i,i)#(a,b)#ivs
+    else if i+1 = a then (i,b)#ivs
+    else if i\<le>b then (a,b)#ivs
+    else if i=b+1 then merge_aux a i ivs
+    else (a,b)#add i ivs
+  )"
+
+
+lemma add_pres_inv:
+  "n\<le>x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (add x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply auto
+    done
+qed
+
+lemma set_of_add:
+  assumes "n\<le>x"
+  assumes "inv' n ivs"
+  shows "set_of (add x ivs) = {x} \<union> set_of ivs"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply (auto split: if_splits)
+    done
+qed
+
+
+lemma add_correct:
+  assumes "inv is"
+  shows "inv (add x is)" "set_of (add x is) = {x} \<union> set_of is"
+  using add_pres_inv assms homework07.inv_def apply fastforce
+  using assms set_of_add homework07.inv_def by fastforce
+
+
+text \<open>Hints:
+  \<^item> Sketch the different cases (position of element relative to the first interval of the list)
+    on paper first
+  \<^item> In one case, you will also need information about the second interval of the list.
+    Do this case split via an auxiliary function! Otherwise, you may end up with a recursion equation of the form
+      \<open>f (x#xs) = \<dots> case xs of x'#xs' \<Rightarrow> \<dots> f (x'#xs') \<dots>\<close>
+    combined with \<open>split: list.splits\<close> this will make the simplifier loop!
+
+\<close>
+
+
+
+text \<open> \NumHomework{Deletion from Interval Lists}{June 1}
+
+  Implement and prove correct a delete function.
+
+  Hints:
+    \<^item> The correctness lemma is analogous to the one for add.
+    \<^item> A monotonicity property on \<open>inv'\<close> may be useful, i.e.,
+      @{prop \<open>inv' m is \<Longrightarrow> inv' m' is\<close>} if @{prop \<open>m'\<le>m\<close>}
+    \<^item> A bounding lemma, relating \<open>m\<close> and the elements of @{term \<open>set_of is\<close>}
+      if @{prop \<open>inv' m is\<close>}, may be useful.
+\<close>
+
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "del _ [] = []" |
+  "del i ((a, b)#ivs) = (
+    if i < a then (a, b)#ivs else
+    if b < i then (a, b)#(del i ivs) else
+    if a = b then ivs else           (* (i, i) = (a, b) *)
+    if i = a then (a+1, b)#ivs else
+    if i = b then (a, b-1)#ivs
+    else (a, i-1)#(i+1, b)#ivs       (* a < i < b*)
+  )"
+
+value "del 10 [(0, 0), (2, 3), (5, 8)]"
+
+lemma inv'_mono: "inv' n ivs \<Longrightarrow> n' \<le> n \<Longrightarrow> inv' n' ivs"
+  by (metis inv'.elims(3) inv'.simps(2) le_trans)
+
+lemma set_of_del:
+  assumes "n \<le> x"
+  assumes "inv' n ivs"
+  shows "set_of (del x ivs) = set_of ivs - {x}"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+     apply (auto split: if_splits)
+    apply blast+
+    done
+qed
+
+lemma set_of_bound: "inv' n ivs \<Longrightarrow> \<forall>x\<in>set_of ivs. x \<ge> n"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    by (smt Groups.add_ac(2) UnE atLeastAtMost_iff inv'.elims(2) le_add_same_cancel2 less_le_trans linorder_not_less list.simps(1) list.simps(3) prod.simps(1) set_of.elims zero_order(1))
+qed
+
+lemma del_pres_inv: "n \<le> x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (del x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+     apply auto
+    done
+qed
+
+lemma del_correct:
+  assumes "inv ivs"
+  shows "inv (del x ivs)" "set_of (del x ivs) = set_of ivs - {x}"
+  using del_pres_inv assms inv_def apply fastforce
+  using assms set_of_del inv_def by fastforce
+
+
+
+text \<open> \NumHomework{Addition of Interval to Interval List}{June 1}
+  For 3 \<^bold>\<open>bonus points\<close>, implement and prove correct a function
+  to add a whole interval to an interval list. The runtime must
+  not depend on the size of the interval, e.g., iterating over the
+  interval and adding the elements separately is not allowed!
+\<close>
+
+fun mergei_aux where
+  "mergei_aux a b [] = [(a,b)]"
+| "mergei_aux a b ((c,d)#ivs) = (
+    if b+1 < c then (a,b)#(c,d)#ivs else
+    if b \<le> d then (a,d)#ivs
+    else mergei_aux a b ivs
+  )"
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i,j)]"
+| "addi i j ((a,b)#ivs) = (
+    if j+1 < a then (i, j)#(a,b)#ivs else
+    if j \<le> b then ((min i a), b)#ivs else
+    if i \<le> b+1 then mergei_aux (min i a) (max j b) ivs else
+    (a,b)#(addi i j ivs)
+  )"
+
+lemma mergei_aux_pres_inv:
+  assumes "inv' (n+2) ivs" "n\<le>a" "a\<le>b"
+  shows "inv' n (mergei_aux a b ivs)"
+  using assms
+proof (induction ivs arbitrary: n rule: mergei_aux.induct)
+  case (1 a b)
+  then show ?case by simp
+next
+  case (2 a b c d ivs)
+  then show ?case using inv'_mono inv'.simps(2) mergei_aux.simps(2)
+    by (smt ab_semigroup_add_class.add_ac(1) discrete le_add1 le_trans one_add_one)
+qed
+
+lemma set_of_mergei_aux:
+  assumes "inv' (a+2) ivs" "a\<le>b"
+  shows "set_of (mergei_aux a b ivs) = {a..b} \<union> set_of ivs"
+  using assms
+proof (induction ivs)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+     apply (auto split: if_splits)
+    done
+qed
+
+lemma addi_pres_inv:
+  "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (addi i j ivs)"
+proof (induction ivs arbitrary: n rule: addi.induct)
+  case (1 i j)
+  then show ?case by simp
+next
+  case (2 i j a b ivs)
+  consider (a) "j+1 < a" | (b) "j+1 \<ge> a \<and> j \<le> b" | (c) "b < j \<and> i \<le> b+1" | (d) "b < j \<and> b+1 < i"
+    using not_less by blast
+  then show ?case
+  proof cases
+    case a
+    then show ?thesis using "2.prems" by simp
+  next
+    case b
+    then show ?thesis using "2.prems" by auto
+  next
+    case c
+    hence assm: "b < j \<and> i \<le> b + 1" by simp
+    from assm "2.prems" have 1: "addi i j ((a, b) # ivs) = mergei_aux (min i a) (max j b) ivs" by simp
+    from "2.prems"(3)  inv'_mono[of "b+2" ivs "a+2"]
+      have 2: "inv' (a + 2) ivs" "a\<le>b" by auto
+    from 1 2 "2.prems" mergei_aux_pres_inv[of n ivs "(min i a)" "(max j b)"] inv'.simps(2)[of n a b ivs]  inv'_mono
+      show ?thesis by (smt Suc_leI add_2_eq_Suc' dual_order.trans le_imp_less_Suc max_def min.commute min_def)
+  next
+    case d
+    then show ?thesis using "2.prems" "2.IH" addi.simps(2) by simp
+  qed
+qed
+
+lemma set_of_addi:
+   "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n ivs \<Longrightarrow> set_of (addi i j ivs) = {i..j} \<union> set_of ivs"
+proof (induction ivs arbitrary: n rule: addi.induct)
+  case (1 i j)
+  then show ?case by simp
+next
+  case (2 i j a b ivs)
+  consider (a) "j+1 < a" | (b) "j+1 \<ge> a \<and> j \<le> b" | (c) "b < j \<and> i \<le> b+1" | (d) "b < j \<and> b+1 < i"
+    using not_less by blast
+  then show ?case
+  proof cases
+    case a
+    then show ?thesis using "2.prems" by simp
+  next
+    case b
+    show ?thesis using b by auto
+  next
+    case c
+    have 1: "addi i j ((a, b) # ivs) = mergei_aux (min i a) (max j b) ivs" using "2.prems" c by simp
+    have 3: "{min i a..max j b} \<union> set_of ivs = {i..j} \<union> set_of ((a, b) # ivs)" using "2.prems" c
+    proof (cases "i\<le>a")
+      case True
+      then show ?thesis
+      proof (cases "j\<le>b")
+        case True
+        then show ?thesis using c by auto
+      next
+        case False
+        then show ?thesis using c by auto
+      qed
+    next
+      case False
+      then show ?thesis
+      proof (cases "j\<le>b")
+        case True
+        then show ?thesis using c by simp
+      next
+        case False
+        then show ?thesis using c by auto
+      qed
+    qed
+    from "2.prems"(3) inv'.simps(1)[of n] inv'.simps(2)[of n a b ivs] inv'_mono[of "b+2" ivs "a+2"]
+    have "inv' (min i a + 2) ivs" using inv'_mono
+        by (meson add_le_cancel_right min_le_iff_disj)
+    then show ?thesis using "2.prems" c 1 set_of_mergei_aux[of "min i a" ivs "max j b"] 3
+      by (metis max_def min.coboundedI1 not_less)
+  next
+    case d
+    then show ?thesis using "2.prems" "2.IH" addi.simps(2) set_of.simps(2)
+      by (smt One_nat_def Suc_leI add.right_neutral add_2_eq_Suc' add_Suc_right inv'.simps(2) not_less sup_left_commute)
+  qed
+qed
+
+lemma addi_correct:
+  assumes "inv is" "i\<le>j"
+  shows "inv (addi i j is)" "set_of (addi i j is) = {i..j} \<union> (set_of is)"
+  using addi_pres_inv assms inv_def apply force
+  using assms set_of_addi inv_def apply (metis zero_le)
+  done
+
+
+(*<*)
+end
+(*>*)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Gottfriedsen_Jakob_j.gottfriedsen@tum.de_461/user_error_log.txt	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,375 @@
+Using temporary directory '/tmp/tmp.phaExHlZf0'
+Files in /tmp/eval-461-lHkOha: homework07.thy
+Command  ['java', '-cp', '/jail/tumjudge-assembly.jar', 'TUMJudge', '/home/test-runner/local-storage']
+=================
+<image>
+HOL-Library
+</image>
+<check>
+
+</check>
+<defs>
+
+
+save_test_theory
+</defs>
+<defs-imports>
+Main Tree
+</defs-imports>
+<check-imports>
+Submission
+</check-imports>
+<submission-imports>
+
+</submission-imports>
+<version>
+2016-1
+</version>
+<submission>
+
+(*>*)
+
+
+text {* \ExerciseSheet{7}{25.~5.~2018} *}
+
+
+text {* \Exercise{Interval Lists}
+
+ Sets of natural numbers can be implemented as lists of intervals, where
+an interval is simply a pair of numbers.  For example the set @{term "{2, 3, 5,
+7, 8, 9::nat}"} can be represented by the list @{term "[(2, 3), (5, 5),
+(7::nat, 9::nat)]"}.  A typical application is the list of free blocks of
+dynamically allocated memory. *}
+
+text {* We introduce the type *}
+
+type_synonym intervals = "(nat*nat) list"
+
+text {* Next, define an \emph{invariant}
+that characterizes valid interval lists:
+For efficiency reasons intervals should be sorted in ascending order, the lower
+bound of each interval should be less than or equal to the upper bound, and the
+intervals should be chosen as large as possible, i.e.\ no two adjacent
+intervals should overlap or even touch each other.  It turns out to be
+convenient to define @{term inv} in terms of a more general function
+such that the additional argument is a lower bound for the intervals in
+the list:*}
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"
+| "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+
+text {* To relate intervals back to sets define an \emph{abstraction function}*}
+
+fun set_of :: "intervals => nat set"
+where
+  "set_of [] = {}"
+| "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+text \<open>Define a function to add a single element to the interval list,
+  and show its correctness\<close>
+
+
+fun merge_aux where
+  "merge_aux a b [] = [(a,b)]"
+| "merge_aux a b ((c,d)#ivs) = (if b+1=c then (a,d)#ivs else (a,b)#(c,d)#ivs)"
+
+fun add :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+  "add i [] = [(i,i)]"
+| "add i ((a,b)#ivs) = (
+    if i+1 < a then (i,i)#(a,b)#ivs
+    else if i+1 = a then (i,b)#ivs
+    else if i\<le>b then (a,b)#ivs
+    else if i=b+1 then merge_aux a i ivs
+    else (a,b)#add i ivs
+  )"
+
+
+lemma add_pres_inv:
+  "n\<le>x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (add x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply auto
+    done
+qed
+
+lemma set_of_add:
+  assumes "n\<le>x"
+  assumes "inv' n ivs"
+  shows "set_of (add x ivs) = {x} \<union> set_of ivs"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply (auto split: if_splits)
+    done
+qed
+
+
+lemma add_correct:
+  assumes "inv is"
+  shows "inv (add x is)" "set_of (add x is) = {x} \<union> set_of is"
+  using add_pres_inv assms homework07.inv_def apply fastforce
+  using assms set_of_add homework07.inv_def by fastforce
+
+
+text \<open>Hints:
+  \<^item> Sketch the different cases (position of element relative to the first interval of the list)
+    on paper first
+  \<^item> In one case, you will also need information about the second interval of the list.
+    Do this case split via an auxiliary function! Otherwise, you may end up with a recursion equation of the form
+      \<open>f (x#xs) = \<dots> case xs of x'#xs' \<Rightarrow> \<dots> f (x'#xs') \<dots>\<close>
+    combined with \<open>split: list.splits\<close> this will make the simplifier loop!
+
+\<close>
+
+
+
+text \<open> \NumHomework{Deletion from Interval Lists}{June 1}
+
+  Implement and prove correct a delete function.
+
+  Hints:
+    \<^item> The correctness lemma is analogous to the one for add.
+    \<^item> A monotonicity property on \<open>inv'\<close> may be useful, i.e.,
+      @{prop \<open>inv' m is \<Longrightarrow> inv' m' is\<close>} if @{prop \<open>m'\<le>m\<close>}
+    \<^item> A bounding lemma, relating \<open>m\<close> and the elements of @{term \<open>set_of is\<close>}
+      if @{prop \<open>inv' m is\<close>}, may be useful.
+\<close>
+
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "del _ [] = []" |
+  "del i ((a, b)#ivs) = (
+    if i < a then (a, b)#ivs else
+    if b < i then (a, b)#(del i ivs) else
+    if a = b then ivs else           (* (i, i) = (a, b) *)
+    if i = a then (a+1, b)#ivs else
+    if i = b then (a, b-1)#ivs
+    else (a, i-1)#(i+1, b)#ivs       (* a < i < b*)
+  )"
+
+value "del 10 [(0, 0), (2, 3), (5, 8)]"
+
+lemma inv'_mono: "inv' n ivs \<Longrightarrow> n' \<le> n \<Longrightarrow> inv' n' ivs"
+  by (metis inv'.elims(3) inv'.simps(2) le_trans)
+
+lemma set_of_del:
+  assumes "n \<le> x"
+  assumes "inv' n ivs"
+  shows "set_of (del x ivs) = set_of ivs - {x}"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+     apply (auto split: if_splits)
+    apply blast+
+    done
+qed
+
+lemma set_of_bound: "inv' n ivs \<Longrightarrow> \<forall>x\<in>set_of ivs. x \<ge> n"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    by (smt Groups.add_ac(2) UnE atLeastAtMost_iff inv'.elims(2) le_add_same_cancel2 less_le_trans linorder_not_less list.simps(1) list.simps(3) prod.simps(1) set_of.elims zero_order(1))
+qed
+
+lemma del_pres_inv: "n \<le> x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (del x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+     apply auto
+    done
+qed
+
+lemma del_correct:
+  assumes "inv ivs"
+  shows "inv (del x ivs)" "set_of (del x ivs) = set_of ivs - {x}"
+  using del_pres_inv assms inv_def apply fastforce
+  using assms set_of_del inv_def by fastforce
+
+
+
+text \<open> \NumHomework{Addition of Interval to Interval List}{June 1}
+  For 3 \<^bold>\<open>bonus points\<close>, implement and prove correct a function
+  to add a whole interval to an interval list. The runtime must
+  not depend on the size of the interval, e.g., iterating over the
+  interval and adding the elements separately is not allowed!
+\<close>
+
+fun mergei_aux where
+  "mergei_aux a b [] = [(a,b)]"
+| "mergei_aux a b ((c,d)#ivs) = (
+    if b+1 < c then (a,b)#(c,d)#ivs else
+    if b \<le> d then (a,d)#ivs
+    else mergei_aux a b ivs
+  )"
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i,j)]"
+| "addi i j ((a,b)#ivs) = (
+    if j+1 < a then (i, j)#(a,b)#ivs else
+    if j \<le> b then ((min i a), b)#ivs else
+    if i \<le> b+1 then mergei_aux (min i a) (max j b) ivs else
+    (a,b)#(addi i j ivs)
+  )"
+
+lemma mergei_aux_pres_inv:
+  assumes "inv' (n+2) ivs" "n\<le>a" "a\<le>b"
+  shows "inv' n (mergei_aux a b ivs)"
+  using assms
+proof (induction ivs arbitrary: n rule: mergei_aux.induct)
+  case (1 a b)
+  then show ?case by simp
+next
+  case (2 a b c d ivs)
+  then show ?case using inv'_mono inv'.simps(2) mergei_aux.simps(2)
+    by (smt ab_semigroup_add_class.add_ac(1) discrete le_add1 le_trans one_add_one)
+qed
+
+lemma set_of_mergei_aux:
+  assumes "inv' (a+2) ivs" "a\<le>b"
+  shows "set_of (mergei_aux a b ivs) = {a..b} \<union> set_of ivs"
+  using assms
+proof (induction ivs)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a ivs)
+  then show ?case 
+    apply (cases a)
+    apply (cases ivs)
+     apply (auto split: if_splits)
+    done
+qed
+
+lemma addi_pres_inv:
+  "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (addi i j ivs)"
+proof (induction ivs arbitrary: n rule: addi.induct)
+  case (1 i j)
+  then show ?case by simp
+next
+  case (2 i j a b ivs)
+  consider (a) "j+1 < a" | (b) "j+1 \<ge> a \<and> j \<le> b" | (c) "b < j \<and> i \<le> b+1" | (d) "b < j \<and> b+1 < i"
+    using not_less by blast
+  then show ?case
+  proof cases
+    case a
+    then show ?thesis using "2.prems" by simp
+  next
+    case b
+    then show ?thesis using "2.prems" by auto
+  next
+    case c
+    hence assm: "b < j \<and> i \<le> b + 1" by simp
+    from assm "2.prems" have 1: "addi i j ((a, b) # ivs) = mergei_aux (min i a) (max j b) ivs" by simp
+    from "2.prems"(3)  inv'_mono[of "b+2" ivs "a+2"]
+      have 2: "inv' (a + 2) ivs" "a\<le>b" by auto
+    from 1 2 "2.prems" mergei_aux_pres_inv[of n ivs "(min i a)" "(max j b)"] inv'.simps(2)[of n a b ivs]  inv'_mono
+      show ?thesis by (smt Suc_leI add_2_eq_Suc' dual_order.trans le_imp_less_Suc max_def min.commute min_def)
+  next
+    case d
+    then show ?thesis using "2.prems" "2.IH" addi.simps(2) by simp
+  qed
+qed
+
+lemma set_of_addi:
+   "n\<le>i \<Longrightarrow> i\<le>j \<Longrightarrow> inv' n ivs \<Longrightarrow> set_of (addi i j ivs) = {i..j} \<union> set_of ivs"
+proof (induction ivs arbitrary: n rule: addi.induct)
+  case (1 i j)
+  then show ?case by simp
+next
+  case (2 i j a b ivs)
+  consider (a) "j+1 < a" | (b) "j+1 \<ge> a \<and> j \<le> b" | (c) "b < j \<and> i \<le> b+1" | (d) "b < j \<and> b+1 < i"
+    using not_less by blast
+  then show ?case
+  proof cases
+    case a
+    then show ?thesis using "2.prems" by simp
+  next
+    case b
+    show ?thesis using b by auto
+  next
+    case c
+    have 1: "addi i j ((a, b) # ivs) = mergei_aux (min i a) (max j b) ivs" using "2.prems" c by simp
+    have 3: "{min i a..max j b} \<union> set_of ivs = {i..j} \<union> set_of ((a, b) # ivs)" using "2.prems" c
+    proof (cases "i\<le>a")
+      case True
+      then show ?thesis
+      proof (cases "j\<le>b")
+        case True
+        then show ?thesis using c by auto
+      next
+        case False
+        then show ?thesis using c by auto
+      qed
+    next
+      case False
+      then show ?thesis
+      proof (cases "j\<le>b")
+        case True
+        then show ?thesis using c by simp
+      next
+        case False
+        then show ?thesis using c by auto
+      qed
+    qed
+    from "2.prems"(3) inv'.simps(1)[of n] inv'.simps(2)[of n a b ivs] inv'_mono[of "b+2" ivs "a+2"]
+    have "inv' (min i a + 2) ivs" using inv'_mono
+        by (meson add_le_cancel_right min_le_iff_disj)
+    then show ?thesis using "2.prems" c 1 set_of_mergei_aux[of "min i a" ivs "max j b"] 3
+      by (metis max_def min.coboundedI1 not_less)
+  next
+    case d
+    then show ?thesis using "2.prems" "2.IH" addi.simps(2) set_of.simps(2)
+      by (smt One_nat_def Suc_leI add.right_neutral add_2_eq_Suc' add_Suc_right inv'.simps(2) not_less sup_left_commute)
+  qed
+qed
+
+lemma addi_correct:
+  assumes "inv is" "i\<le>j"
+  shows "inv (addi i j is)" "set_of (addi i j is) = {i..j} \<union> (set_of is)"
+  using addi_pres_inv assms inv_def apply force
+  using assms set_of_addi inv_def apply (metis zero_le)
+  done
+
+
+(*<*)
+</submission>
+=================
+Failed to load submission in Isabelle!
+Test case check_build:	Failed
+Runner terminated with exit code 1.
+Test execution terminated with exit code 1.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/SENTMAIL	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,1 @@
+s.griebel@tum.de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/homework07.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,282 @@
+(** Score: 13/10
+
+  nice job
+*)
+(*<*)
+theory homework07
+  imports Main "HOL-Data_Structures.Sorting"
+begin
+(*>*)
+
+hide_const (open) inv
+
+
+text {* \ExerciseSheet{7}{25.~5.~2018} *}
+
+
+text {* \Exercise{Interval Lists}
+
+ Sets of natural numbers can be implemented as lists of intervals, where
+an interval is simply a pair of numbers.  For example the set @{term "{2, 3, 5,
+7, 8, 9::nat}"} can be represented by the list @{term "[(2, 3), (5, 5),
+(7::nat, 9::nat)]"}.  A typical application is the list of free blocks of
+dynamically allocated memory. *}
+
+text {* We introduce the type *}
+
+type_synonym intervals = "(nat*nat) list"
+
+text {* Next, define an \emph{invariant}
+that characterizes valid interval lists:
+For efficiency reasons intervals should be sorted in ascending order, the lower
+bound of each interval should be less than or equal to the upper bound, and the
+intervals should be chosen as large as possible, i.e.\ no two adjacent
+intervals should overlap or even touch each other.  It turns out to be
+convenient to define @{term inv} in terms of a more general function
+such that the additional argument is a lower bound for the intervals in
+the list:*}
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"
+| "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+
+text {* To relate intervals back to sets define an \emph{abstraction function}*}
+
+fun set_of :: "intervals => nat set"
+where
+  "set_of [] = {}"
+| "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+text \<open>Define a function to add a single element to the interval list,
+  and show its correctness\<close>
+
+
+fun merge_aux where
+  "merge_aux a b [] = [(a,b)]"
+| "merge_aux a b ((c,d)#ivs) = (if b+1=c then (a,d)#ivs else (a,b)#(c,d)#ivs)"
+
+fun add :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+  "add i [] = [(i,i)]"
+| "add i ((a,b)#ivs) = (
+    if i+1 < a then (i,i)#(a,b)#ivs
+    else if i+1 = a then (i,b)#ivs
+    else if i\<le>b then (a,b)#ivs
+    else if i=b+1 then merge_aux a i ivs
+    else (a,b)#add i ivs
+  )"
+
+
+lemma add_pres_inv:
+  "n\<le>x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (add x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply auto
+    done
+qed
+
+lemma set_of_add:
+  assumes "n\<le>x"
+  assumes "inv' n ivs"
+  shows "set_of (add x ivs) = {x} \<union> set_of ivs"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply (auto split: if_splits)
+    done
+qed
+
+
+lemma add_correct:
+  assumes "inv is"
+  shows "inv (add x is)" "set_of (add x is) = {x} \<union> set_of is"
+  using add_pres_inv assms inv_def apply fastforce
+  using assms set_of_add inv_def by fastforce
+
+
+text \<open>Hints:
+  \<^item> Sketch the different cases (position of element relative to the first interval of the list)
+    on paper first
+  \<^item> In one case, you will also need information about the second interval of the list.
+    Do this case split via an auxiliary function! Otherwise, you may end up with a recursion equation of the form
+      \<open>f (x#xs) = \<dots> case xs of x'#xs' \<Rightarrow> \<dots> f (x'#xs') \<dots>\<close>
+    combined with \<open>split: list.splits\<close> this will make the simplifier loop!
+
+\<close>
+
+
+text \<open>\Exercise{Optimized Mergesort}
+
+  Import @{theory "Sorting"} for this exercise.
+  The @{const msort} function recomputes the length of the list in each iteration.
+  Implement an optimized version that has an additional parameter keeping track
+  of the length, and show that it is equal to the original @{const msort}.
+\<close>
+
+(* Optimized mergesort *)
+
+fun msort2 :: "nat \<Rightarrow> 'a::linorder list \<Rightarrow> 'a list" where
+"msort2 n xs = (
+  if n \<le> 1 then xs
+  else merge (msort2 (n div 2) (take (n div 2) xs)) (msort2 (n - n div 2) (drop (n div 2) xs)))"
+
+declare msort2.simps[simp del]
+
+lemma "n = length xs \<Longrightarrow> msort2 n xs = msort xs"
+proof (induction n xs rule: msort2.induct)
+  case (1 n xs)
+  then show ?case
+    using msort.simps[of xs] msort2.simps[of n xs]
+    apply (auto simp: )
+    done
+
+qed
+
+
+text \<open>Hint:
+  Use @{thm [source] msort.simps} only when instantiated to a particular \<open>xs\<close>
+  (@{thm [source] msort.simps[of xs]}),
+  otherwise the simplifier will loop!
+\<close>
+
+
+
+text \<open> \NumHomework{Deletion from Interval Lists}{June 1}
+
+  Implement and prove correct a delete function.
+
+  Hints:
+    \<^item> The correctness lemma is analogous to the one for add.
+    \<^item> A monotonicity property on \<open>inv'\<close> may be useful, i.e.,
+      @{prop \<open>inv' m is \<Longrightarrow> inv' m' is\<close>} if @{prop \<open>m'\<le>m\<close>}
+    \<^item> A bounding lemma, relating \<open>m\<close> and the elements of @{term \<open>set_of is\<close>}
+      if @{prop \<open>inv' m is\<close>}, may be useful.
+\<close>
+
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "del _ [] = []"
+| "del n ((a, b)#ints) = (if n > b then (a,b)#(del n ints)
+                      else if n < a then (a,b)#ints
+                      else if n = a \<and> n = b then ints
+                      else if n = b then (a, b-1)#ints
+                      else if n = a then (a+1,b)#ints
+                      else (a, n-1)#(n+1, b)#ints)"
+
+
+lemma del_presv_inv: "inv' p ints \<Longrightarrow> inv' p (del n ints)"
+proof (induction ints arbitrary: p)
+  case Nil
+  then show ?case by force
+next
+  case (Cons intv ints)
+  then show ?case
+    apply(cases intv)
+    apply(cases ints)
+    by auto
+qed
+
+
+lemma inv_elements_less_eq: "inv' m ints \<Longrightarrow> \<forall>x \<in> set_of ints.  m \<le> x"
+  apply(induction ints arbitrary: m)
+  by fastforce+
+
+lemma set_of_del: "inv' p ints \<Longrightarrow> set_of (del n ints) = set_of ints - {n}"
+  proof (induction ints arbitrary: p rule: del.induct)
+    case (1 uu)
+    then show ?case by simp
+  next
+    case (2 n a b ints)
+    then show ?case
+      apply(simp)
+      using inv_elements_less_eq by fastforce
+  qed
+
+lemma del_correct:
+  assumes "inv ints"
+  shows "inv (del n ints)" "set_of (del n ints) = set_of ints - {n}"
+  using assms del_presv_inv[of 0] inv_def apply force
+  using assms set_of_del[of 0] inv_def by force
+
+
+
+
+text \<open> \NumHomework{Addition of Interval to Interval List}{June 1}
+  For 3 \<^bold>\<open>bonus points\<close>, implement and prove correct a function
+  to add a whole interval to an interval list. The runtime must
+  not depend on the size of the interval, e.g., iterating over the
+  interval and adding the elements separately is not allowed!
+\<close>
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i, j)]"
+| "addi i j ((a,b)#ints) = (
+                     if j + 1 < a then (i,j)#(a,b)#ints
+                     else if b + 1 < i then (a, b)#(addi i j ints)
+                     else addi (if i < a then i else a) (if j > b then j else b) ints)"
+
+value "addi 1 2 []"
+value "addi 4 8 [(4,8)]"
+value "addi 4 8 [(4,4)]"
+value "addi 4 8 [(5,7)]"
+value "addi 4 8 [(8,8)]"
+value "addi 4 8 [(5,5), (7,7)]"
+value "addi 4 8 [(1,1), (11, 12)]"
+value "addi 4 8 [(1,1), (3,5), (7,9), (11, 12)]"
+value "addi 4 8 [(1,1), (3,3), (9,9), (11, 12)]"
+
+
+lemma addi_presv_inv: "inv' p ints \<and> i\<le>j \<and> p \<le> i \<Longrightarrow> inv' p (addi i j ints)"
+proof(induction ints arbitrary: i j p)
+  case Nil
+  then show ?case by force
+next
+  case (Cons intv ints)
+  then show ?case
+    apply(cases intv)
+    apply(cases ints)
+    by (auto split: if_splits)
+qed
+
+lemma set_of_addi: "inv' p ints \<and> i\<le>j \<and> p \<le> i \<Longrightarrow> set_of (addi i j ints) = {i..j} \<union> (set_of ints)"
+proof(induction ints arbitrary: i j)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons intv ints)
+  then show ?case
+    apply(cases intv)
+    apply(cases ints)
+    by (auto split: if_splits)
+qed
+
+lemma addi_correct:
+  assumes "inv ints" "i\<le>j"
+  shows "inv (addi i j ints)" "set_of (addi i j ints) = {i..j} \<union> (set_of ints)"
+  using inv_def addi_presv_inv assms apply force
+  using inv_def set_of_addi[of 0] assms by force
+
+
+(*<*)
+end
+(*>*)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Griebel_Simon_s.griebel@tum.de_455/user_error_log.txt	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,306 @@
+Using temporary directory '/tmp/tmp.iCgkXZV0As'
+Files in /tmp/eval-455-t73y5h: homework07.thy
+Command  ['java', '-cp', '/jail/tumjudge-assembly.jar', 'TUMJudge', '/home/test-runner/local-storage']
+=================
+<version>
+2016-1
+</version>
+<defs-imports>
+Main Tree
+</defs-imports>
+<image>
+HOL-Library
+</image>
+<defs>
+
+
+save_test_theory
+</defs>
+<check>
+
+</check>
+<check-imports>
+Submission
+</check-imports>
+<submission>
+
+(*>*)
+
+hide_const (open) inv
+
+
+text {* \ExerciseSheet{7}{25.~5.~2018} *}
+
+
+text {* \Exercise{Interval Lists}
+
+ Sets of natural numbers can be implemented as lists of intervals, where
+an interval is simply a pair of numbers.  For example the set @{term "{2, 3, 5,
+7, 8, 9::nat}"} can be represented by the list @{term "[(2, 3), (5, 5),
+(7::nat, 9::nat)]"}.  A typical application is the list of free blocks of
+dynamically allocated memory. *}
+
+text {* We introduce the type *}
+
+type_synonym intervals = "(nat*nat) list"
+
+text {* Next, define an \emph{invariant}
+that characterizes valid interval lists:
+For efficiency reasons intervals should be sorted in ascending order, the lower
+bound of each interval should be less than or equal to the upper bound, and the
+intervals should be chosen as large as possible, i.e.\ no two adjacent
+intervals should overlap or even touch each other.  It turns out to be
+convenient to define @{term inv} in terms of a more general function
+such that the additional argument is a lower bound for the intervals in
+the list:*}
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"
+| "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+
+
+text {* To relate intervals back to sets define an \emph{abstraction function}*}
+
+fun set_of :: "intervals => nat set"
+where
+  "set_of [] = {}"
+| "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+text \<open>Define a function to add a single element to the interval list,
+  and show its correctness\<close>
+
+
+fun merge_aux where
+  "merge_aux a b [] = [(a,b)]"
+| "merge_aux a b ((c,d)#ivs) = (if b+1=c then (a,d)#ivs else (a,b)#(c,d)#ivs)"
+
+fun add :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+  "add i [] = [(i,i)]"
+| "add i ((a,b)#ivs) = (
+    if i+1 < a then (i,i)#(a,b)#ivs
+    else if i+1 = a then (i,b)#ivs
+    else if i\<le>b then (a,b)#ivs
+    else if i=b+1 then merge_aux a i ivs
+    else (a,b)#add i ivs
+  )"
+
+
+lemma add_pres_inv:
+  "n\<le>x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (add x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply auto
+    done
+qed
+
+lemma set_of_add:
+  assumes "n\<le>x"
+  assumes "inv' n ivs"
+  shows "set_of (add x ivs) = {x} \<union> set_of ivs"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply (auto split: if_splits)
+    done
+qed
+
+
+lemma add_correct:
+  assumes "inv is"
+  shows "inv (add x is)" "set_of (add x is) = {x} \<union> set_of is"
+  using add_pres_inv assms inv_def apply fastforce
+  using assms set_of_add inv_def by fastforce
+
+
+text \<open>Hints:
+  \<^item> Sketch the different cases (position of element relative to the first interval of the list)
+    on paper first
+  \<^item> In one case, you will also need information about the second interval of the list.
+    Do this case split via an auxiliary function! Otherwise, you may end up with a recursion equation of the form
+      \<open>f (x#xs) = \<dots> case xs of x'#xs' \<Rightarrow> \<dots> f (x'#xs') \<dots>\<close>
+    combined with \<open>split: list.splits\<close> this will make the simplifier loop!
+
+\<close>
+
+
+text \<open>\Exercise{Optimized Mergesort}
+
+  Import @{theory "Sorting"} for this exercise.
+  The @{const msort} function recomputes the length of the list in each iteration.
+  Implement an optimized version that has an additional parameter keeping track
+  of the length, and show that it is equal to the original @{const msort}.
+\<close>
+
+(* Optimized mergesort *)
+
+fun msort2 :: "nat \<Rightarrow> 'a::linorder list \<Rightarrow> 'a list" where
+"msort2 n xs = (
+  if n \<le> 1 then xs
+  else merge (msort2 (n div 2) (take (n div 2) xs)) (msort2 (n - n div 2) (drop (n div 2) xs)))"
+
+declare msort2.simps[simp del]
+
+lemma "n = length xs \<Longrightarrow> msort2 n xs = msort xs"
+proof (induction n xs rule: msort2.induct)
+  case (1 n xs)
+  then show ?case
+    using msort.simps[of xs] msort2.simps[of n xs]
+    apply (auto simp: )
+    done
+
+qed
+
+
+text \<open>Hint:
+  Use @{thm [source] msort.simps} only when instantiated to a particular \<open>xs\<close>
+  (@{thm [source] msort.simps[of xs]}),
+  otherwise the simplifier will loop!
+\<close>
+
+
+
+text \<open> \NumHomework{Deletion from Interval Lists}{June 1}
+
+  Implement and prove correct a delete function.
+
+  Hints:
+    \<^item> The correctness lemma is analogous to the one for add.
+    \<^item> A monotonicity property on \<open>inv'\<close> may be useful, i.e.,
+      @{prop \<open>inv' m is \<Longrightarrow> inv' m' is\<close>} if @{prop \<open>m'\<le>m\<close>}
+    \<^item> A bounding lemma, relating \<open>m\<close> and the elements of @{term \<open>set_of is\<close>}
+      if @{prop \<open>inv' m is\<close>}, may be useful.
+\<close>
+
+
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "del _ [] = []"
+| "del n ((a, b)#ints) = (if n > b then (a,b)#(del n ints)
+                      else if n < a then (a,b)#ints
+                      else if n = a \<and> n = b then ints
+                      else if n = b then (a, b-1)#ints
+                      else if n = a then (a+1,b)#ints
+                      else (a, n-1)#(n+1, b)#ints)"
+
+
+lemma del_presv_inv: "inv' p ints \<Longrightarrow> inv' p (del n ints)"
+proof (induction ints arbitrary: p)
+  case Nil
+  then show ?case by force
+next
+  case (Cons intv ints)
+  then show ?case
+    apply(cases intv)
+    apply(cases ints)
+    by auto
+qed
+
+
+lemma inv_elements_less_eq: "inv' m ints \<Longrightarrow> \<forall>x \<in> set_of ints.  m \<le> x"
+  apply(induction ints arbitrary: m)
+  by fastforce+
+
+lemma set_of_del: "inv' p ints \<Longrightarrow> set_of (del n ints) = set_of ints - {n}"
+  proof (induction ints arbitrary: p rule: del.induct)
+    case (1 uu)
+    then show ?case by simp
+  next
+    case (2 n a b ints)
+    then show ?case
+      apply(simp)
+      using inv_elements_less_eq by fastforce
+  qed
+
+lemma del_correct: 
+  assumes "inv ints"
+  shows "inv (del n ints)" "set_of (del n ints) = set_of ints - {n}"
+  using assms del_presv_inv[of 0] inv_def apply force
+  using assms set_of_del[of 0] inv_def by force
+
+
+
+
+text \<open> \NumHomework{Addition of Interval to Interval List}{June 1}
+  For 3 \<^bold>\<open>bonus points\<close>, implement and prove correct a function
+  to add a whole interval to an interval list. The runtime must
+  not depend on the size of the interval, e.g., iterating over the
+  interval and adding the elements separately is not allowed!
+\<close>
+
+fun addi :: "nat \<Rightarrow> nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "addi i j [] = [(i, j)]"
+| "addi i j ((a,b)#ints) = (
+                     if j + 1 < a then (i,j)#(a,b)#ints
+                     else if b + 1 < i then (a, b)#(addi i j ints)
+                     else addi (if i < a then i else a) (if j > b then j else b) ints)"
+
+value "addi 1 2 []"
+value "addi 4 8 [(4,8)]"
+value "addi 4 8 [(4,4)]"
+value "addi 4 8 [(5,7)]"
+value "addi 4 8 [(8,8)]"
+value "addi 4 8 [(5,5), (7,7)]"
+value "addi 4 8 [(1,1), (11, 12)]"
+value "addi 4 8 [(1,1), (3,5), (7,9), (11, 12)]"
+value "addi 4 8 [(1,1), (3,3), (9,9), (11, 12)]"
+
+
+lemma addi_presv_inv: "inv' p ints \<and> i\<le>j \<and> p \<le> i \<Longrightarrow> inv' p (addi i j ints)"
+proof(induction ints arbitrary: i j p)
+  case Nil
+  then show ?case by force
+next
+  case (Cons intv ints)
+  then show ?case 
+    apply(cases intv)
+    apply(cases ints)
+    by (auto split: if_splits)
+qed
+
+lemma set_of_addi: "inv' p ints \<and> i\<le>j \<and> p \<le> i \<Longrightarrow> set_of (addi i j ints) = {i..j} \<union> (set_of ints)"
+proof(induction ints arbitrary: i j)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons intv ints)
+  then show ?case 
+    apply(cases intv)
+    apply(cases ints)
+    by (auto split: if_splits)
+qed
+
+lemma addi_correct:
+  assumes "inv ints" "i\<le>j"
+  shows "inv (addi i j ints)" "set_of (addi i j ints) = {i..j} \<union> (set_of ints)"
+  using inv_def addi_presv_inv assms apply force
+  using inv_def set_of_addi[of 0] assms by force
+
+
+(*<*)
+</submission>
+<submission-imports>
+
+</submission-imports>
+=================
+Failed to load submission in Isabelle!
+Test case check_build:	Failed
+Runner terminated with exit code 1.
+Test execution terminated with exit code 1.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_469/SENTMAIL	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,1 @@
+clemens.jonischkeit@tum.de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SS18/Exercises/hwsubm/hw07/Jonischkeit_Clemens_clemens.jonischkeit@tum.de_469/jonischkeit07.thy	Wed Jun 13 11:16:59 2018 +0200
@@ -0,0 +1,319 @@
+(** Score: 7/10
+  unfinished proof in del-set, rest OK
+*)
+(*<*)
+theory jonischkeit07
+  imports Main "HOL-Data_Structures.Sorting"
+begin
+(*>*)
+
+hide_const (open) inv
+
+
+text {* \ExerciseSheet{7}{25.~5.~2018} *}
+
+
+text {* \Exercise{Interval Lists}
+
+ Sets of natural numbers can be implemented as lists of intervals, where
+an interval is simply a pair of numbers.  For example the set @{term "{2, 3, 5,
+7, 8, 9::nat}"} can be represented by the list @{term "[(2, 3), (5, 5),
+(7::nat, 9::nat)]"}.  A typical application is the list of free blocks of
+dynamically allocated memory. *}
+
+text {* We introduce the type *}
+
+type_synonym intervals = "(nat*nat) list"
+
+text {* Next, define an \emph{invariant}
+that characterizes valid interval lists:
+For efficiency reasons intervals should be sorted in ascending order, the lower
+bound of each interval should be less than or equal to the upper bound, and the
+intervals should be chosen as large as possible, i.e.\ no two adjacent
+intervals should overlap or even touch each other.  It turns out to be
+convenient to define @{term inv} in terms of a more general function
+such that the additional argument is a lower bound for the intervals in
+the list:*}
+
+fun inv' :: "nat \<Rightarrow> intervals \<Rightarrow> bool" where
+  "inv' n [] \<longleftrightarrow> True"
+| "inv' n ((a,b)#ivs) \<longleftrightarrow> n\<le>a \<and> a\<le>b \<and> inv' (b+2) ivs"
+
+definition inv where "inv = inv' 0"
+
+text {* To relate intervals back to sets define an \emph{abstraction function}*}
+
+fun set_of :: "intervals => nat set"
+where
+  "set_of [] = {}"
+| "set_of ((a,b)#ivs) = {a..b} \<union> set_of ivs"
+
+text \<open>Define a function to add a single element to the interval list,
+  and show its correctness\<close>
+
+
+fun merge_aux where
+  "merge_aux a b [] = [(a,b)]"
+| "merge_aux a b ((c,d)#ivs) = (if b+1=c then (a,d)#ivs else (a,b)#(c,d)#ivs)"
+
+fun add :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+  where
+  "add i [] = [(i,i)]"
+| "add i ((a,b)#ivs) = (
+    if i+1 < a then (i,i)#(a,b)#ivs
+    else if i+1 = a then (i,b)#ivs
+    else if i\<le>b then (a,b)#ivs
+    else if i=b+1 then merge_aux a i ivs
+    else (a,b)#add i ivs
+  )"
+
+
+lemma add_pres_inv:
+  "n\<le>x \<Longrightarrow> inv' n ivs \<Longrightarrow> inv' n (add x ivs)"
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply auto
+    done
+qed
+
+lemma set_of_add:
+  assumes "n\<le>x"
+  assumes "inv' n ivs"
+  shows "set_of (add x ivs) = {x} \<union> set_of ivs"
+  using assms
+proof (induction ivs arbitrary: n)
+  case Nil
+  then show ?case by auto
+next
+  case (Cons a ivs)
+  then show ?case
+    apply (cases a)
+    apply (cases ivs)
+    apply (auto split: if_splits)
+    done
+qed
+
+
+lemma add_correct:
+  assumes "inv is"
+  shows "inv (add x is)" "set_of (add x is) = {x} \<union> set_of is"
+  using add_pres_inv assms jonischkeit07.inv_def apply fastforce
+  using assms set_of_add jonischkeit07.inv_def by fastforce
+
+
+text \<open>Hints:
+  \<^item> Sketch the different cases (position of element relative to the first interval of the list)
+    on paper first
+  \<^item> In one case, you will also need information about the second interval of the list.
+    Do this case split via an auxiliary function! Otherwise, you may end up with a recursion equation of the form
+      \<open>f (x#xs) = \<dots> case xs of x'#xs' \<Rightarrow> \<dots> f (x'#xs') \<dots>\<close>
+    combined with \<open>split: list.splits\<close> this will make the simplifier loop!
+
+\<close>
+
+
+text \<open>\Exercise{Optimized Mergesort}
+
+  Import @{theory "Sorting"} for this exercise.
+  The @{const msort} function recomputes the length of the list in each iteration.
+  Implement an optimized version that has an additional parameter keeping track
+  of the length, and show that it is equal to the original @{const msort}.
+\<close>
+
+(* Optimized mergesort *)
+
+fun msort2 :: "nat \<Rightarrow> 'a::linorder list \<Rightarrow> 'a list" where
+"msort2 n xs = (
+  if n \<le> 1 then xs
+  else merge (msort2 (n div 2) (take (n div 2) xs)) (msort2 (n - n div 2) (drop (n div 2) xs)))"
+
+declare msort2.simps[simp del]
+
+lemma "n = length xs \<Longrightarrow> msort2 n xs = msort xs"
+proof (induction n xs rule: msort2.induct)
+  case (1 n xs)
+  then show ?case
+    using msort.simps[of xs] msort2.simps[of n xs]
+    apply (auto simp: )
+    done
+
+qed
+
+
+text \<open>Hint:
+  Use @{thm [source] msort.simps} only when instantiated to a particular \<open>xs\<close>
+  (@{thm [source] msort.simps[of xs]}),
+  otherwise the simplifier will loop!
+\<close>
+
+
+
+text \<open> \NumHomework{Deletion from Interval Lists}{June 1}
+
+  Implement and prove correct a delete function.
+
+  Hints:
+    \<^item> The correctness lemma is analogous to the one for add.
+    \<^item> A monotonicity property on \<open>inv'\<close> may be useful, i.e.,
+      @{prop \<open>inv' m is \<Longrightarrow> inv' m' is\<close>} if @{prop \<open>m'\<le>m\<close>}
+    \<^item> A bounding lemma, relating \<open>m\<close> and the elements of @{term \<open>set_of is\<close>}
+      if @{prop \<open>inv' m is\<close>}, may be useful.
+\<close>
+
+fun del_from_intv :: "nat \<Rightarrow> (nat \<times> nat) \<Rightarrow> intervals" where
+"del_from_intv a (st, end) = (let es = (a = st); ee = (a = end) in
+  if es \<and> ee then [] else
+  if es then [(st + 1, end)] else
+  if ee then [(st, end - 1)] else
+  [(st, a - 1), (a + 1, end)])"
+
+lemma del_from_intv_inv:
+  "\<lbrakk>inv' x [(st, end)]; a \<ge> st; a \<le> end\<rbrakk> \<Longrightarrow> inv' x (del_from_intv a (st, end))"
+by (auto)
+
+lemma inv'_relax[simp]:
+  "a \<le> b \<Longrightarrow> inv' b xs \<Longrightarrow> inv' a xs"
+  by (induction xs, auto)
+
+lemma set_of_del_intv:
+  "\<lbrakk>a \<ge> st; a \<le> end\<rbrakk> \<Longrightarrow> set_of (del_from_intv a (st, end)) = set_of [(st, end)] - {a}"
+  by auto
+
+lemma del_from_intv_inv_post:
+  "\<lbrakk>inv' x ((st, end) # ls); a \<ge> st; a \<le> end\<rbrakk> \<Longrightarrow> inv' x (del_from_intv a (st, end) @ ls)"
+  apply (cases "a = st")
+  apply (cases "a = end")
+  apply (auto)
+  using inv'_relax le_SucI apply blast+
+  done
+
+fun del :: "nat \<Rightarrow> intervals \<Rightarrow> intervals"
+where
+  "del _ [] = []" |
+  "del a ((st,end)#intv) = (if a < st then (st,end)#intv else
+    if a > end then (st, end) # del a intv else del_from_intv a (st, end) @ intv)"
+
+lemma inv_low_bnd:
+  "inv' (Suc l) as \<Longrightarrow> \<forall>x\<in> set_of as. l < x"
+  apply (induction as, auto)
+  by (meson inv'_relax le_SucI)
+
+(*
+i did start a little late, sorry for the terrible and unfinished proofs this time
+*)
+lemma del_set:
+  "inv' l as \<Longrightarrow> set_of (del x as) = set_of as - {x}"
+proof (induction as)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons a bs)
+  then obtain sa en where "a = (sa, en)" by fastforce
+  then show ?case using Cons
+  proof (cases "x < sa")
+    case True
+  then show ?thesis using inv_low_bnd
+    by (metis Cons.prems Diff_empty Diff_insert0 Suc_lessD UnE \<open>a = (sa, en)\<close> add_2_eq_Suc' atLeastAtMost_iff del.simps(2) inv'.simps(2) le_less_trans order.asym set_of.simps(2))
+  next
+    case False
+    then show ?thesis
+    proof (cases "en < x")
+    case True
+      then show ?thesis sorry
+    next
+    case False
+      then show ?thesis sorry
+    qed
+  qed
+qed
+
+lemma del_inv:
+  "inv' a as \<Longrightarrow> inv' a (del x as)"
+proof (induction as)
+  case Nil
+  then show ?case by simp
+next
+  case (Cons c as)
+  then obtain st "end" where "c = (st, end)" by fastforce
+  then show ?case using Cons
+    apply (cases "x < st")
+     apply (cases "end < x")
+    apply (auto)
+    using Suc_leD inv'_relax apply blast
+    using Suc_leD inv'_relax apply blast
+proof -
+  assume a1: "inv' (Suc (Suc end)) as"
+  assume a2: "inv' a as \<Longrightarrow> inv' a (del x as)"
+assume a3: "a \<le> st"
+  assume a4: "st \<le> end"
+  have f5: "\<forall>n ps. \<not> inv' n ps \<or> (\<exists>na. n = na \<and> ps = []) \<or> (\<exists>na nb nc psa. n = na \<and> ps = (nb, nc) # psa \<and> na \<le> nb \<and> nb \<le> nc \<and> inv' (nc + 2) psa)"
+    by (meson inv'.elims(2))
+  obtain nn :: "(nat \<times> nat) list \<Rightarrow> nat \<Rightarrow> nat" where
+    "\<forall>x0 x1. (\<exists>v2. x1 = v2 \<and> x0 = []) = (x1 = nn x0 x1 \<and> x0 = [])"
+    by moura
+then obtain nna :: "(nat \<times> nat) list \<Rightarrow> nat \<Rightarrow> nat" and nnb :: "(nat \<times> nat) list \<Rightarrow> nat \<Rightarrow> nat" and nnc :: "(nat \<times> nat) list \<Rightarrow> nat \<Rightarrow> nat" and pps :: "(nat \<times> nat) list \<Rightarrow> nat \<Rightarrow> (nat \<times> nat) list" where
+  "\<forall>ps n. (\<not> inv' n ps \<or> (\<exists>na. n = na \<and> ps = []) \<or> (\<exists>na nb nc psa. n = na \<and> ps = (nb, nc) # psa \<and> na \<le> nb \<and> nb \<le> nc \<and> inv' (nc + 2) psa)) = (\<not> inv' n ps \<or> n = nn ps n \<and> ps = [] \<or> n = nna ps n \<and> ps = (nnb ps n, nnc ps n) # pps ps n \<and> nna ps n \<le> nnb ps n \<and> nnb ps n \<le> nnc ps n \<and> inv' (nnc ps n + 2) (pps ps n))"
+  by moura
+  then have f6: "\<forall>n ps. \<not> inv' n ps \<or> n = nn ps n \<and> ps = [] \<or> n = nna ps n \<and> ps = (nnb ps n, nnc ps n) # pps ps n \<and> nna ps n \<le> nnb ps n \<and> nnb ps n \<le> nnc ps n \<and> inv' (nnc ps n + 2) (pps ps n)"
+using f5 by presburger
+  then have f7: "Suc (Suc end) = nn as (Suc (Suc end)) \<and> as = [] \<or> Suc (Suc end) = nna as (Suc (Suc end)) \<and> as = (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end)) \<and> nna as (Suc (Suc end)) \<le> nnb as (Suc (Suc end)) \<and> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<and> inv' (nnc as (Suc (Suc end)) + 2) (pps as (Suc (Suc end)))"
+    using a1 by presburger
+  have f8: "as = [] \<longrightarrow> inv' (Suc (Suc end)) (del x as)"
+    by simp
+have f9: "\<forall>n na nb ps. inv' n ((na, nb) # ps) = (n \<le> na \<and> na \<le> nb \<and> inv' (nb + 2) ps)"
+using inv'.simps(2) by blast
+  then have f10: "inv' a as \<or> Suc (Suc end) \<noteq> nna as (Suc (Suc end)) \<or> as \<noteq> (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end)) \<or> \<not> nna as (Suc (Suc end)) \<le> nnb as (Suc (Suc end)) \<or> \<not> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<or> \<not> inv' (nnc as (Suc (Suc end)) + 2) (pps as (Suc (Suc end)))"
+    using a4 a3 by (metis (no_types) Suc_n_not_le_n dual_order.trans nat_le_linear)
+  { assume "\<not> nna (del x as) a \<le> nnb as (Suc (Suc end)) \<or> \<not> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<or> \<not> inv' (nnc as (Suc (Suc end)) + 2) (del x (pps as (Suc (Suc end))))"
+    moreover
+    { assume "inv' (nna (del x as) a) ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # del x (pps as (Suc (Suc end)))) \<noteq> inv' a (del x as)"
+      moreover
+      { assume "a \<noteq> nna (del x as) a \<or> del x as \<noteq> (nnb (del x as) a, nnc (del x as) a) # pps (del x as) a \<or> \<not> nna (del x as) a \<le> nnb (del x as) a \<or> \<not> nnb (del x as) a \<le> nnc (del x as) a \<or> \<not> inv' (nnc (del x as) a + 2) (pps (del x as) a)"
+        moreover
+        { assume "a = nn (del x as) a \<and> del x as = []"
+          then have "inv' (nna as (Suc (Suc end))) ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) \<and> inv' a (del x as) \<longrightarrow> as = [] \<or> (Suc (Suc end) \<noteq> nna as (Suc (Suc end)) \<or> as \<noteq> (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end)) \<or> \<not> nna as (Suc (Suc end)) \<le> nnb as (Suc (Suc end)) \<or> \<not> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<or> \<not> inv' (nnc as (Suc (Suc end)) + 2) (pps as (Suc (Suc end)))) \<or> inv' (Suc (Suc end)) (del x as)"
+            by simp }
+        ultimately have "inv' (nna as (Suc (Suc end))) ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) \<and> inv' a (del x as) \<longrightarrow> as = [] \<or> (Suc (Suc end) \<noteq> nna as (Suc (Suc end)) \<or> as \<noteq> (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end)) \<or> \<not> nna as (Suc (Suc end)) \<le> nnb as (Suc (Suc end)) \<or> \<not> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<or> \<not> inv' (nnc as (Suc (Suc end)) + 2) (pps as (Suc (Suc end)))) \<or> inv' (Suc (Suc end)) (del x as)"
+          using f6 by metis }
+      ultimately have "inv' (nna as (Suc (Suc end))) ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) \<and> del x ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) = (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # del x (pps as (Suc (Suc end))) \<and> inv' a (del x as) \<longrightarrow> as = [] \<or> (Suc (Suc end) \<noteq> nna as (Suc (Suc end)) \<or> as \<noteq> (nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end)) \<or> \<not> nna as (Suc (Suc end)) \<le> nnb as (Suc (Suc end)) \<or> \<not> nnb as (Suc (Suc end)) \<le> nnc as (Suc (Suc end)) \<or> \<not> inv' (nnc as (Suc (Suc end)) + 2) (pps as (Suc (Suc end)))) \<or> inv' (Suc (Suc end)) (del x as)"
+        by (metis (no_types)) }
+    ultimately have "inv' (nna as (Suc (Suc end))) ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) \<and> del x ((nnb as (Suc (Suc end)), nnc as (Suc (Suc end))) # pps as (Suc (Suc end))) = (nnb as (Suc (Suc end)), nnc as (Suc