src/HOL/Record.thy
changeset 5198 b1adae4f8b90
parent 5032 0c9939c2ab5c
child 5210 54aaa779b6b4
--- a/src/HOL/Record.thy	Fri Jul 24 17:54:44 1998 +0200
+++ b/src/HOL/Record.thy	Fri Jul 24 17:54:58 1998 +0200
@@ -12,21 +12,37 @@
 (* concrete syntax *)
 
 nonterminals
-  ident field fields
+  ident field_type field_types field fields update updates
 
 syntax
-  ""		    :: "id => ident"			("_")
-  ""		    :: "longid => ident"		("_")
-  "_field"	    :: "[ident, 'a] => field"		("(2_ =/ _)")
-  ""	            :: "field => fields"		("_")
-  "_fields"	    :: "[field, fields] => fields"	("_,/ _")
-  "_record"	    :: "fields => 'a"			("('(| _ |'))")
-  "_record_scheme"  :: "[fields, 'a] => 'b"		("('(| _,/ (2... =/ _) |'))")
+  (*field names*)
+  ""                	:: "id => ident"                    		("_")
+  ""                	:: "longid => ident"                		("_")
+
+  (*record types*)
+  "_field_type"         :: "[ident, type] => field_type"           	("(2_ ::/ _)")
+  ""               	:: "field_type => field_types"              	("_")
+  "_field_types"	:: "[field_type, field_types] => field_types"   ("_,/ _")
+  "_record_type"	:: "field_types => type"                   	("('(| _ |'))")
+  "_record_type_scheme"	:: "[field_types, type] => type"	("('(| _,/ (2... ::/ _) |'))")
+
+  (*records*)
+  "_field"          	:: "[ident, 'a] => field"           		("(2_ =/ _)")
+  ""                	:: "field => fields"                		("_")
+  "_fields"         	:: "[field, fields] => fields"      		("_,/ _")
+  "_record"         	:: "fields => 'a"                   		("('(| _ |'))")
+  "_record_scheme"  	:: "[fields, 'a] => 'a"             	("('(| _,/ (2... =/ _) |'))")
+
+  (*record updates*)
+  "_update"	    	:: "[ident, 'a] => update"           		("(2_ :=/ _)")
+  ""                	:: "update => updates"               		("_")
+  "_updates"        	:: "[update, updates] => updates"    		("_,/ _")
+  "_record_update"  	:: "['a, updates] => 'b"               	("_/('(| _ |'))" [900,0] 900)
 
 
 (* type class for record extensions *)
 
-global		(*compatibility with global_names flag!*)
+global          (*compatibility with global_names flag!*)
 
 axclass more < term