src/HOL/Corec_Examples/Tests/Merge_D.thy
author wenzelm
Mon, 04 Apr 2016 22:55:50 +0200
changeset 62858 d72a6f9ee690
parent 62726 5b2a7caa855b
permissions -rw-r--r--
tuned headers;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62858
d72a6f9ee690 tuned headers;
wenzelm
parents: 62726
diff changeset
     1
(*  Title:      HOL/Corec_Examples/Tests/Merge_D.thy
62696
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     2
    Author:     Aymeric Bouzy, Ecole polytechnique
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     3
    Author:     Jasmin Blanchette, Inria, LORIA, MPII
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     4
    Copyright   2015, 2016
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     5
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     6
Tests theory merges.
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     7
*)
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
     8
62726
5b2a7caa855b tuned examples
blanchet
parents: 62696
diff changeset
     9
section \<open>Tests Theory Merges\<close>
62696
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    10
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    11
theory Merge_D
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    12
imports Merge_B Merge_C
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    13
begin
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    14
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    15
thm ta.coinduct_upto
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    16
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    17
(* Merges files having defined their own friends and uses these friends to
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    18
define another corecursive function. *)
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    19
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    20
corec gd where
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    21
  "gd = fc (gc (gb (fb (ga (Ca 0 gd)))))"
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    22
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    23
thm gd_def
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    24
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    25
term fc
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    26
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    27
corec hd :: "('a::zero) ta \<Rightarrow> 'a ta" where
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    28
  "hd s = fc (gc (gb (fb (ga (Ca 0 (hd s))))))"
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    29
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    30
friend_of_corec hd where
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    31
  "hd s = Ca 0 (fc (gc (gb (fb (ga (Ca 0 (hd s)))))))"
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    32
  sorry
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    33
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    34
corecursive (friend) ff :: "'a ta \<Rightarrow> 'a ta" where
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    35
  "ff x = Ca undefined (ff x)"
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    36
  sorry
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    37
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    38
thm ta.cong_intros
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    39
thm ta.cong_gb
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    40
7325d8573fb8 added 'corec' examples and tests
blanchet
parents:
diff changeset
    41
end