src/HOL/Library/Cancellation/cancel_simprocs.ML
author wenzelm
Mon, 13 Apr 2020 22:08:14 +0200
changeset 71751 abf3e80bd815
parent 69593 3dda49e08b9d
child 74633 994a2b9daf1d
permissions -rw-r--r--
tuned NEWS;
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
69593
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    22
  val dest_bal = HOLogic.dest_bin \<^const_name>\<open>HOL.eq\<close> dummyT
65029
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
69593
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    29
  val mk_bal   = HOLogic.mk_binrel \<^const_name>\<open>Orderings.less\<close>
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    30
  val dest_bal = HOLogic.dest_bin \<^const_name>\<open>Orderings.less\<close> dummyT
65029
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
69593
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    37
  val mk_bal   = HOLogic.mk_binrel \<^const_name>\<open>Orderings.less_eq\<close>
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    38
  val dest_bal = HOLogic.dest_bin \<^const_name>\<open>Orderings.less_eq\<close> dummyT
65029
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
69593
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    45
  val mk_bal   = HOLogic.mk_binop \<^const_name>\<open>Groups.minus\<close>
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 65367
diff changeset
    46
  val dest_bal = HOLogic.dest_bin \<^const_name>\<open>Groups.minus\<close> dummyT
65029
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