src/HOL/Nominal/Examples/Class.thy
author berghofe
Fri, 28 Apr 2006 17:58:33 +0200
changeset 19500 188d4e44c1a6
parent 19477 a95176d0f0dd
child 22232 340cb955008e
permissions -rw-r--r--
Removed broken proof.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19500
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
     1
(* $Id$ *)
18425
bcf13dbaa339 I think the earlier version was completely broken
urbanc
parents: 18395
diff changeset
     2
18661
dde117622dac updated to new induction principle
urbanc
parents: 18425
diff changeset
     3
theory Class 
19500
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
     4
imports "../Nominal" 
18425
bcf13dbaa339 I think the earlier version was completely broken
urbanc
parents: 18395
diff changeset
     5
begin
18395
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
     6
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
     7
section {* Term-Calculus from Urban's PhD *}
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
     8
18395
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
     9
atom_decl name coname
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
    10
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    11
nominal_datatype trm = 
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    12
    Ax   "name" "coname"
19319
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    13
  | Cut  "\<guillemotleft>coname\<guillemotright>trm" "\<guillemotleft>name\<guillemotright>trm"            ("Cut <_>._ [_]._" [100,100,100,100] 100)
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    14
  | NotR "\<guillemotleft>name\<guillemotright>trm" "coname"                 ("NotR [_]._ _" [100,100,100] 100)
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    15
  | NotL "\<guillemotleft>coname\<guillemotright>trm" "name"                 ("NotL <_>._ _" [100,100,100] 100)
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    16
  | AndR "\<guillemotleft>coname\<guillemotright>trm" "\<guillemotleft>coname\<guillemotright>trm" "coname" ("AndR <_>._ <_>._ _" [100,100,100,100,100] 100)
19319
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    17
  | AndL1 "\<guillemotleft>name\<guillemotright>trm" "name"                  ("AndL1 [_]._ _" [100,100,100] 100)
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    18
  | AndL2 "\<guillemotleft>name\<guillemotright>trm" "name"                  ("AndL2 [_]._ _" [100,100,100] 100)
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    19
  | OrR1 "\<guillemotleft>coname\<guillemotright>trm" "coname"               ("OrR1 <_>._ _" [100,100,100] 100)
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    20
  | OrR2 "\<guillemotleft>coname\<guillemotright>trm" "coname"               ("OrR2 <_>._ _" [100,100,100] 100)
19319
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    21
  | OrL "\<guillemotleft>name\<guillemotright>trm" "\<guillemotleft>name\<guillemotright>trm" "name"        ("OrL [_]._ [_]._ _" [100,100,100,100,100] 100)
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    22
  | ImpR "\<guillemotleft>name\<guillemotright>(\<guillemotleft>coname\<guillemotright>trm)" "coname"       ("ImpR [_].<_>._ _" [100,100,100,100] 100)
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    23
  | ImpL "\<guillemotleft>coname\<guillemotright>trm" "\<guillemotleft>name\<guillemotright>trm" "name"     ("ImpL <_>._ [_]._ _" [100,100,100,100,100] 100)
7e1f85ceb1a2 added the first two simple proofs of the recursion
urbanc
parents: 18881
diff changeset
    24
19477
a95176d0f0dd isar-keywords.el
urbanc
parents: 19326
diff changeset
    25
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    26
text {* Induction principles *}
18395
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
    27
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    28
thm trm.induct_weak --"weak"
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    29
thm trm.induct      --"strong"
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    30
thm trm.induct'     --"strong with explicit context (rarely needed)"
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    31
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    32
text {* named terms *}
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    33
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    34
nominal_datatype ntrm = N "\<guillemotleft>name\<guillemotright>trm" ("N (_)._" [100,100] 100)
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    35
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    36
text {* conamed terms *}
18395
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
    37
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    38
nominal_datatype ctrm = C "\<guillemotleft>coname\<guillemotright>trm" ("C <_>._" [100,100] 100)
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    39
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    40
text {* We should now define the two forms of substitition :o( *}
18395
87217764cec2 initial commit (not to be seen by the public)
urbanc
parents:
diff changeset
    41
18881
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    42
consts
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    43
  substn :: "trm \<Rightarrow> name   \<Rightarrow> ctrm \<Rightarrow> trm" ("_[_::=_]" [100,100,100] 100) 
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    44
  substc :: "trm \<Rightarrow> coname \<Rightarrow> ntrm \<Rightarrow> trm" ("_[_::=_]" [100,100,100] 100)
c5f7cba2a675 added all constructors from PhD
urbanc
parents: 18661
diff changeset
    45
19500
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
    46
text {* does not work yet *}
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
    47
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
    48
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
    49
end
188d4e44c1a6 Removed broken proof.
berghofe
parents: 19477
diff changeset
    50