Theory BinEx

Up to index of Isabelle/ZF/ex

theory BinEx
imports Main
begin

(*  Title:      ZF/ex/BinEx.ML
    ID:         $Id: BinEx.thy,v 1.2 2005/06/17 14:15:11 haftmann Exp $
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
    Copyright   1994  University of Cambridge

Examples of performing binary arithmetic by simplification
*)

theory BinEx imports Main begin
(*All runtimes below are on a 300MHz Pentium*)

lemma "#13  $+  #19 = #32"
by simp (*0 secs*)

lemma "#1234  $+  #5678 = #6912"
by simp (*190 msec*)

lemma "#1359  $+  #-2468 = #-1109"
by simp (*160 msec*)

lemma "#93746  $+  #-46375 = #47371"
by simp (*300 msec*)

lemma "$- #65745 = #-65745"
by simp (*80 msec*)

(* negation of ~54321 *)
lemma "$- #-54321 = #54321"
by simp (*90 msec*)

lemma "#13  $*  #19 = #247"
by simp (*110 msec*)

lemma "#-84  $*  #51 = #-4284"
by simp (*210 msec*)

(*The worst case for 8-bit operands *)
lemma "#255  $*  #255 = #65025"
by simp (*730 msec*)

lemma "#1359  $*  #-2468 = #-3354012"
by simp (*1.04 secs*)


(** Comparisons **)

lemma "(#89) $* #10 ≠ #889"
by simp

lemma "(#13) $< #18 $- #4"
by simp

lemma "(#-345) $< #-242 $+ #-100"
by simp

lemma "(#13557456) $< #18678654"
by simp

lemma "(#999999) $<= (#1000001 $+ #1) $- #2"
by simp

lemma "(#1234567) $<= #1234567"
by simp


(*** Quotient and remainder!! [they could be faster] ***)

lemma "#23 zdiv #3 = #7"
by simp

lemma "#23 zmod #3 = #2"
by simp

(** negative dividend **)

lemma "#-23 zdiv #3 = #-8"
by simp

lemma "#-23 zmod #3 = #1"
by simp

(** negative divisor **)

lemma "#23 zdiv #-3 = #-8"
by simp

lemma "#23 zmod #-3 = #-1"
by simp

(** Negative dividend and divisor **)

lemma "#-23 zdiv #-3 = #7"
by simp

lemma "#-23 zmod #-3 = #-2"
by simp

end


lemma

  #13 $+ #19 = #32

lemma

  #1234 $+ #5678 = #6912

lemma

  #1359 $+ #-2468 = #-1109

lemma

  #93746 $+ #-46375 = #47371

lemma

  $- #65745 = #-65745

lemma

  $- #-54321 = #54321

lemma

  #13 $× #19 = #247

lemma

  #-84 $× #51 = #-4284

lemma

  #255 $× #255 = #65025

lemma

  #1359 $× #-2468 = #-3354012

lemma

  #89 $× #10 ≠ #889

lemma

  #13 $< #18 $- #4

lemma

  #-345 $< #-242 $+ #-100

lemma

  #13557456 $< #18678654

lemma

  #999999 $≤ #1000001 $+ #1 $- #2

lemma

  #1234567 $≤ #1234567

lemma

  #23 zdiv #3 = #7

lemma

  #23 zmod #3 = #2

lemma

  #-23 zdiv #3 = #-8

lemma

  #-23 zmod #3 = #1

lemma

  #23 zdiv #-3 = #-8

lemma

  #23 zmod #-3 = #-1

lemma

  #-23 zdiv #-3 = #7

lemma

  #-23 zmod #-3 = #-2