src/HOL/Word/Traditional_Syntax.thy
author wenzelm
Thu, 16 Jul 2020 20:34:21 +0200
changeset 72050 d4de7e4754d2
parent 72000 379d0c207c29
child 72508 c89d8e8bd8c7
permissions -rw-r--r--
clarified theory data: more robust merge;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72000
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     1
(*  Author:     Jeremy Dawson, NICTA
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     2
*)
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     3
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     4
section \<open>Operation variants with traditional syntax\<close>
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     5
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     6
theory Traditional_Syntax
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     7
  imports Main
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     8
begin
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
     9
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    10
class semiring_bit_syntax = semiring_bit_shifts +
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    11
  fixes test_bit :: \<open>'a \<Rightarrow> nat \<Rightarrow> bool\<close>  (infixl "!!" 100)
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    12
    and shiftl :: \<open>'a \<Rightarrow> nat \<Rightarrow> 'a\<close>  (infixl "<<" 55)
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    13
    and shiftr :: \<open>'a \<Rightarrow> nat \<Rightarrow> 'a\<close>  (infixl ">>" 55)
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    14
  assumes test_bit_eq_bit: \<open>test_bit = bit\<close>
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    15
    and shiftl_eq_push_bit: \<open>a << n = push_bit n a\<close>
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    16
    and shiftr_eq_drop_bit: \<open>a >> n = drop_bit n a\<close>
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    17
379d0c207c29 separation of traditional bit operations
haftmann
parents:
diff changeset
    18
end