doc-src/TutorialI/IsarOverview/Isar/Calc.thy
author berghofe
Mon, 30 Sep 2002 16:34:56 +0200
changeset 13604 57bfacbbaeda
parent 13562 5b71e1408ac4
child 13613 531f1f524848
permissions -rw-r--r--
- eliminated thin_leading_eqs_tac - gen_hyp_subst_tac now uses asm_lr_simp_tac instead of asm_full_simp_tac, in order to avoid divergence of new simplifier
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13562
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     1
theory Calc = Main:
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     2
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     3
axclass
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     4
  group < zero, plus, minus
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     5
  assoc:       "(x + y) + z = x + (y + z)"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     6
  left_0:      "0 + x = x"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     7
  left_minus:  "-x + x = 0"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     8
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
     9
theorem right_minus: "x + -x = (0::'a::group)"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    10
proof -
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    11
  have   "x + -x = (-(-x) + -x) + (x + -x)"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    12
    by (simp only: left_0 left_minus)
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    13
  also have "... = -(-x) + ((-x + x) + -x)"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    14
    by (simp only: group.assoc)
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    15
  also have "... = 0"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    16
    by (simp only: left_0 left_minus)
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    17
  finally show ?thesis .
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    18
qed
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    19
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    20
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    21
lemma assumes R: "(a,b) \<in> R" "(b,c) \<in> R" "(c,d) \<in> R"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    22
      shows "(a,d) \<in> R\<^sup>*"
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    23
proof -
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    24
       have "(a,b) \<in> R\<^sup>*" ..
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    25
  also have "(b,c) \<in> R\<^sup>*" ..
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    26
  also have "(c,d) \<in> R\<^sup>*" ..
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    27
  finally show ?thesis .
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    28
qed
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    29
5b71e1408ac4 *** empty log message ***
nipkow
parents:
diff changeset
    30
end