src/HOL/Library/Cancellation/cancel_simprocs.ML
author wenzelm
Wed, 04 Oct 2017 12:00:53 +0200
changeset 66787 64b47495676d
parent 65367 83c30e290702
child 69593 3dda49e08b9d
permissions -rw-r--r--
obsolete;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
65367
83c30e290702 tuned headers;
wenzelm
parents: 65029
diff changeset
     1
(*  Title:      HOL/Library/Cancellation/cancel_simprocs.ML
83c30e290702 tuned headers;
wenzelm
parents: 65029
diff changeset
     2
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
65029
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     3
    Author:     Mathias Fleury, MPII
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     4
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     5
Cancelation simprocs declaration.
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     6
*)
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     7
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     8
signature CANCEL_SIMPROCS =
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
     9
sig
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    10
  val eq_cancel: Proof.context -> cterm -> thm option
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    11
  val less_cancel: Proof.context -> cterm -> thm option
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    12
  val less_eq_cancel: Proof.context -> cterm -> thm option
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    13
  val diff_cancel: Proof.context -> cterm -> thm option
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    14
end;
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    15
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    16
structure Cancel_Simprocs : CANCEL_SIMPROCS =
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    17
struct
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    18
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    19
structure Eq_Cancel_Comm_Monoid_add = Cancel_Fun
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    20
 (open Cancel_Data
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    21
  val mk_bal   = HOLogic.mk_eq
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    22
  val dest_bal = HOLogic.dest_bin @{const_name HOL.eq} dummyT
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    23
  val bal_add1 = @{thm iterate_add_eq_add_iff1} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    24
  val bal_add2 = @{thm iterate_add_eq_add_iff2} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    25
);
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    26
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    27
structure Eq_Cancel_Comm_Monoid_less = Cancel_Fun
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    28
 (open Cancel_Data
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    29
  val mk_bal   = HOLogic.mk_binrel @{const_name Orderings.less}
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    30
  val dest_bal = HOLogic.dest_bin @{const_name Orderings.less} dummyT
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    31
  val bal_add1 = @{thm iterate_add_less_iff1} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    32
  val bal_add2 = @{thm iterate_add_less_iff2} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    33
);
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    34
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    35
structure Eq_Cancel_Comm_Monoid_less_eq = Cancel_Fun
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    36
 (open Cancel_Data
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    37
  val mk_bal   = HOLogic.mk_binrel @{const_name Orderings.less_eq}
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    38
  val dest_bal = HOLogic.dest_bin @{const_name Orderings.less_eq} dummyT
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    39
  val bal_add1 = @{thm iterate_add_less_eq_iff1} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    40
  val bal_add2 = @{thm iterate_add_less_eq_iff2} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    41
);
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    42
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    43
structure Diff_Cancel_Comm_Monoid_less_eq = Cancel_Fun
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    44
 (open Cancel_Data
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    45
  val mk_bal   = HOLogic.mk_binop @{const_name Groups.minus}
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    46
  val dest_bal = HOLogic.dest_bin @{const_name Groups.minus} dummyT
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    47
  val bal_add1 = @{thm iterate_add_add_eq1} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    48
  val bal_add2 = @{thm iterate_add_diff_add_eq2} RS trans
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    49
);
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    50
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    51
val eq_cancel = Eq_Cancel_Comm_Monoid_add.proc;
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    52
val less_cancel = Eq_Cancel_Comm_Monoid_less.proc;
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    53
val less_eq_cancel = Eq_Cancel_Comm_Monoid_less_eq.proc;
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    54
val diff_cancel = Diff_Cancel_Comm_Monoid_less_eq.proc;
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    55
00731700e54f cancellation simprocs generalising the multiset simprocs
fleury <Mathias.Fleury@mpi-inf.mpg.de>
parents:
diff changeset
    56
end