Admin/Benchmarks/HOL-datatype/Verilog.thy
author mengj
Mon, 28 Nov 2005 07:13:43 +0100
changeset 18271 0e9a851db989
parent 16417 9bc16273c2d4
child 22875 9b21fa38a3cf
permissions -rw-r--r--
Added two methods "vampire" and "eprover" that handle both HOL and FOL proofs. Still have old verions of "vampireH","vampireF", "eproverH", "eproverF", which can be called to handle HOL or FOL problems.

(*  Title:      Admin/Benchmarks/HOL-datatype/Verilog.thy
    ID:         $Id$
*)

theory Verilog imports Main begin

(* ------------------------------------------------------------------------- *)
(* Example from Daryl: a Verilog grammar.                                    *)
(* ------------------------------------------------------------------------- *)

datatype
  Source_text
     = module string "string list" "Module_item list"
     | Source_textMeta string
and
  Module_item
     = declaration Declaration
     | initial Statement
     | always Statement
     | assign Lvalue Expression
     | Module_itemMeta string
and
  Declaration
     = reg_declaration "Range option" "string list"
     | net_declaration "Range option" "string list"
     | input_declaration "Range option" "string list"
     | output_declaration "Range option" "string list"
     | DeclarationMeta string
and
  Range = range Expression Expression | RangeMeta string
and
  Statement
     = clock_statement Clock Statement_or_null
     | blocking_assignment Lvalue Expression
     | non_blocking_assignment Lvalue Expression
     | conditional_statement
          Expression Statement_or_null "Statement_or_null option"
     | case_statement Expression "Case_item list"
     | while_loop Expression Statement
     | repeat_loop Expression Statement
     | for_loop
          Lvalue Expression Expression Lvalue Expression Statement
     | forever_loop Statement
     | disable string
     | seq_block "string option" "Statement list"
     | StatementMeta string
and
  Statement_or_null
     = statement Statement | null_statement | Statement_or_nullMeta string
and
  Clock
     = posedge string
     | negedge string
     | clock string
     | ClockMeta string
and
  Case_item
     = case_item "Expression list" Statement_or_null
     | default_case_item Statement_or_null
     | Case_itemMeta string
and
  Expression
     = plus Expression Expression
     | minus Expression Expression
     | lshift Expression Expression
     | rshift Expression Expression
     | lt Expression Expression
     | leq Expression Expression
     | gt Expression Expression
     | geq Expression Expression
     | logeq Expression Expression
     | logneq Expression Expression
     | caseeq Expression Expression
     | caseneq Expression Expression
     | bitand Expression Expression
     | bitxor Expression Expression
     | bitor Expression Expression
     | logand Expression Expression
     | logor Expression Expression
     | conditional Expression Expression Expression
     | positive Primary
     | negative Primary
     | lognot Primary
     | bitnot Primary
     | reducand Primary
     | reducxor Primary
     | reducor Primary
     | reducnand Primary
     | reducxnor Primary
     | reducnor Primary
     | primary Primary
     | ExpressionMeta string
and
  Primary
     = primary_number Number
     | primary_IDENTIFIER string
     | primary_bit_select string Expression
     | primary_part_select string Expression Expression
     | primary_gen_bit_select Expression Expression
     | primary_gen_part_select Expression Expression Expression
     | primary_concatenation Concatenation
     | primary_multiple_concatenation Multiple_concatenation
     | brackets Expression
     | PrimaryMeta string
and
  Lvalue
     = lvalue string
     | lvalue_bit_select string Expression
     | lvalue_part_select string Expression Expression
     | lvalue_concatenation Concatenation
     | LvalueMeta string
and
  Number
     = decimal string
     | based "string option" string
     | NumberMeta string
and
  Concatenation
     = concatenation "Expression list" | ConcatenationMeta string
and
  Multiple_concatenation
     = multiple_concatenation Expression "Expression list"
     | Multiple_concatenationMeta string
and
  meta
     = Meta_Source_text Source_text
     | Meta_Module_item Module_item
     | Meta_Declaration Declaration
     | Meta_Range Range
     | Meta_Statement Statement
     | Meta_Statement_or_null Statement_or_null
     | Meta_Clock Clock
     | Meta_Case_item Case_item
     | Meta_Expression Expression
     | Meta_Primary Primary
     | Meta_Lvalue Lvalue
     | Meta_Number Number
     | Meta_Concatenation Concatenation
     | Meta_Multiple_concatenation Multiple_concatenation

end