trees
authorfahadausaf <fahad.ausaf@icloud.com>
Fri, 10 Oct 2014 18:45:10 +0100
changeset 28 d3831bf423f2
parent 27 378077bab5d2
child 29 2345ba5b4264
trees
thys/#MyTree.thy#
thys/MyInduction.thy
thys/MyTree.thy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thys/#MyTree.thy#	Fri Oct 10 18:45:10 2014 +0100
@@ -0,0 +1,42 @@
+theory MyTree
+imports Main
+begin
+
+datatype 
+  'a tree = Tip | 
+  Node " 'a tree" 'a " 'a tree"
+
+fun mirror :: " 'a tree \<Rightarrow> 'a tree" where
+  "mirror Tip = Tip" |
+  "mirror (Node l a r) = Node (mirror r) a (mirror l)"
+
+lemma "mirror(mirror t) = t"
+  apply(induction t)
+  apply(auto)
+  done
+
+datatype 'a option = None | Some 'a
+
+fun lookup :: "('a * 'b) list \<Rightarrow> 'a \<Rightarrow> 'b option" where
+  "lookup [] x = None" |
+  "lookup ((a,b) # ps) x = (if a = x then Some b else lookup ps x)"
+
+definition sq :: "nat \<Rightarrow> nat" where
+  "sq n = n * n"
+ 
+abbreviation sq' :: "nat \<Rightarrow> nat" where
+  "sq' n \<equiv> n * n"
+
+fun div2 :: "nat \<Rightarrow> nat" where
+  "div2 0 = 0" |
+  "div2 (Suc 0) = 0" |
+  "div2 (Suc(Suc n)) = Suc(div2 n)"
+
+lemma "div2(n) = n div 2"
+apply(induction n rule: div2.induct)
+apply(auto)
+done
+
+value "div2 8"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thys/MyInduction.thy	Fri Oct 10 18:45:10 2014 +0100
@@ -0,0 +1,3 @@
+theory MyInduction
+imports Main
+begin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thys/MyTree.thy	Fri Oct 10 18:45:10 2014 +0100
@@ -0,0 +1,3 @@
+theory MyTree
+imports Main
+begin