src/HOL/Library/multiset_order_simprocs.ML
author fleury <Mathias.Fleury@mpi-inf.mpg.de>
Fri, 07 Oct 2016 17:58:36 +0200
changeset 64076 9f089287687b
parent 63793 e68a0b651eb5
child 65029 00731700e54f
permissions -rw-r--r--
tuning multisets
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63793
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     1
(* Author: Mathias Fleury, MPII
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     2
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     3
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     4
Simprocs for multisets ordering, based on the simprocs for nat numerals.
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     5
*)
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     6
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     7
signature MULTISET_ORDER_SIMPROCS =
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     8
sig
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     9
  val less_cancel_msets: Proof.context -> cterm -> thm option
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    10
  val le_cancel_msets: Proof.context -> cterm -> thm option
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    11
end;
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    12
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    13
structure Multiset_Order_Simprocs : MULTISET_ORDER_SIMPROCS =
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    14
struct
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    15
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    16
structure LessCancelMultiset = CancelNumeralsFun
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    17
 (open Multiset_Cancel_Common
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    18
  val mk_bal   = HOLogic.mk_binrel @{const_name Orderings.less}
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    19
  val dest_bal = HOLogic.dest_bin @{const_name Orderings.less} dummyT
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    20
  val bal_add1 = @{thm mset_less_add_iff1} RS trans
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    21
  val bal_add2 = @{thm mset_less_add_iff2} RS trans
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    22
);
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    23
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    24
structure LeCancelMultiset = CancelNumeralsFun
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    25
 (open Multiset_Cancel_Common
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    26
  val mk_bal   = HOLogic.mk_binrel @{const_name Orderings.less_eq}
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    27
  val dest_bal = HOLogic.dest_bin @{const_name Orderings.less_eq} dummyT
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    28
  val bal_add1 = @{thm mset_le_add_iff1} RS trans
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    29
  val bal_add2 = @{thm mset_le_add_iff2} RS trans
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    30
);
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    31
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    32
val less_cancel_msets = LessCancelMultiset.proc;
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    33
val le_cancel_msets = LeCancelMultiset.proc;
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    34
e68a0b651eb5 add_mset constructor in multisets
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    35
end