mirror of
https://github.com/supleed2/ELEC70056-HSV-CW1.git
synced 2024-12-22 21:55:48 +00:00
Isabelle Task 1 complete
This commit is contained in:
parent
ba694b4e41
commit
d226d0a21b
|
@ -1,20 +1,28 @@
|
||||||
theory HSV_tasks_2022 imports Complex_Main begin
|
theory HSV_tasks_2022 imports Complex_Main begin
|
||||||
|
|
||||||
section {* Task 1: Full adders *}
|
section "Task 1: Full adders"
|
||||||
|
|
||||||
|
fun halfadder :: "bool * bool \<Rightarrow> bool * bool"
|
||||||
|
where "halfadder (a,b) = (
|
||||||
|
let cout = (a \<and> b) in
|
||||||
|
let s = (a \<or> b) \<and> \<not>(a \<and> b) in
|
||||||
|
(cout, s))"
|
||||||
|
|
||||||
fun fulladder :: "bool * bool * bool \<Rightarrow> bool * bool"
|
fun fulladder :: "bool * bool * bool \<Rightarrow> bool * bool"
|
||||||
where
|
where "fulladder (a,b,cin) = (
|
||||||
"fulladder (a,b,cin) = (
|
|
||||||
let (tmp1, tmp2) = halfadder(a,b) in
|
let (tmp1, tmp2) = halfadder(a,b) in
|
||||||
let (tmp3, s) = halfadder(cin,tmp2) in
|
let (tmp3, s) = halfadder(cin,tmp2) in
|
||||||
let cout = tmp1 | tmp3 in
|
let cout = tmp1 | tmp3 in
|
||||||
(cout, s))"
|
(cout, s))"
|
||||||
|
|
||||||
|
fun b2i :: "bool \<Rightarrow> int"
|
||||||
|
where "b2i (b) = (if (b) then 1 else 0)"
|
||||||
|
|
||||||
section {* Task 2: Fifth powers *}
|
theorem "\<forall>a b.(co,s) = halfadder(a,b) \<Longrightarrow> (2*b2i(co)+b2i(s)) = (b2i(a)+b2i(b))"
|
||||||
|
by auto
|
||||||
|
|
||||||
theorem "(n::nat) ^ 5 mod 10 = n mod 10"
|
theorem "\<forall>a b ci.(co,s) = fulladder(a,b,ci) \<Longrightarrow> (2*b2i(co)+b2i(s)) = (b2i(a)+b2i(b)+b2i(ci))"
|
||||||
oops
|
by auto
|
||||||
|
|
||||||
section {* Task 3: Logic optimisation *}
|
section {* Task 3: Logic optimisation *}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue