equal
deleted
inserted
replaced
1 theory QuotMain |
1 theory QuotMain |
2 imports QuotScript QuotList Prove |
2 imports QuotScript QuotList Prove |
3 uses ("quotient.ML") |
3 uses ("quotient.ML") |
4 begin |
4 begin |
|
5 |
5 |
6 |
6 locale QUOT_TYPE = |
7 locale QUOT_TYPE = |
7 fixes R :: "'a \<Rightarrow> 'a \<Rightarrow> bool" |
8 fixes R :: "'a \<Rightarrow> 'a \<Rightarrow> bool" |
8 and Abs :: "('a \<Rightarrow> bool) \<Rightarrow> 'b" |
9 and Abs :: "('a \<Rightarrow> bool) \<Rightarrow> 'b" |
9 and Rep :: "'b \<Rightarrow> ('a \<Rightarrow> bool)" |
10 and Rep :: "'b \<Rightarrow> ('a \<Rightarrow> bool)" |
139 then show "R (REP a) (REP b) \<equiv> (a = b)" by simp |
140 then show "R (REP a) (REP b) \<equiv> (a = b)" by simp |
140 qed |
141 qed |
141 |
142 |
142 end |
143 end |
143 |
144 |
|
145 |
144 section {* type definition for the quotient type *} |
146 section {* type definition for the quotient type *} |
145 |
147 |
146 use "quotient.ML" |
148 use "quotient.ML" |
147 |
149 |
148 term EQUIV |
150 term EQUIV |
247 update @{type_name "fun"} {mapfun = @{const_name "fun_map"}, relfun = @{const_name "FUN_REL"}} |
249 update @{type_name "fun"} {mapfun = @{const_name "fun_map"}, relfun = @{const_name "FUN_REL"}} |
248 *} |
250 *} |
249 |
251 |
250 |
252 |
251 ML {* lookup @{theory} @{type_name list} *} |
253 ML {* lookup @{theory} @{type_name list} *} |
252 |
|
253 |
254 |
254 ML {* |
255 ML {* |
255 (* calculates the aggregate abs and rep functions for a given type; |
256 (* calculates the aggregate abs and rep functions for a given type; |
256 repF is for constants' arguments; absF is for constants; |
257 repF is for constants' arguments; absF is for constants; |
257 function types need to be treated specially, since repF and absF |
258 function types need to be treated specially, since repF and absF |