The use of Higher Order Logic for automated deduction can be tedious since you have to think like a machine. But it will be full of fun once you start to appreciate the sheer beauty of logic. In this coursework, I specified IDEA, a secret key cryptographic algorithm, in HOL-4 (Kananaskis 3) and proved its correctness with automated machine proofing. Some lovely specifications and deductions are listed below. For detailed information, please refer to the report.
val IDEA_def = Define `IDEA key =
let oddkeys = ListToOddKeys (MakeKeys key) ZeroOddKeys in
let evenkeys = ListToEvenKeys (MakeKeys key) ZeroEvenKeys in
(IdeaFwd oddkeys evenkeys, IdeaFwd (InverseKeys oddkeys) (ReverseKeys evenkeys))`;
val IDEA_LEMMA = Q.store_thm
("IDEA_LEMMA",
`!plaintext:Block oddkeys:OddKeySched evenkeys:EvenKeySched.
IdeaFwd (InverseKeys oddkeys) (ReverseKeys evenkeys) (IdeaFwd oddkeys evenkeys plaintext) = plaintext`,
SIMP_TAC std_ss [FORALL_ODDKEYSCHED, FORALL_EVENKEYSCHED] THEN
RESTR_EVAL_TAC [OddRound, EvenRound] THEN
SIMP_TAC std_ss [OddRound_Inversion, EvenRound_Inversion]);
val IDEA_CORRECT = Q.store_thm
("IDEA_CORRECT",
`!key plaintext.
((encrypt,decrypt) = IDEA key)
==>
(decrypt (encrypt plaintext) = plaintext)`,
RW_TAC std_ss [IDEA_def,LET_THM,IDEA_LEMMA]);
Since everyone I met told me the famous quote — "Almost every influential person in the modern computer-graphics community either passed through the University of Utah or came into contact with it in some way," I could not help to taking a graphics class. I'm not majored in Computer Graphics, so please bear with me if you find a defect in my homework snapshots below.
The fun of this class comes from the combination of graphics techniques with methods of studying multidimensional
data. I learned a great deal of human vision, color mapping, data representation,
volume rendering, etc. Here are some of my visualization samples.
|