2018-04-06 12:25:21 +00:00
|
|
|
theory mathex_onto
|
2018-05-24 09:30:01 +00:00
|
|
|
imports "../Isa_DOF"
|
2018-04-06 12:25:21 +00:00
|
|
|
begin
|
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
doc_class Author =
|
|
|
|
affiliation :: "string"
|
2018-04-29 09:35:24 +00:00
|
|
|
email :: "string"
|
2018-04-06 12:32:22 +00:00
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
datatype Subject =
|
2018-06-06 17:24:17 +00:00
|
|
|
algebra | geometry | statistical | analysis
|
2018-04-06 12:32:22 +00:00
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
datatype Level =
|
|
|
|
oneStar | twoStars | threeStars
|
2018-04-06 12:32:22 +00:00
|
|
|
|
2018-04-29 09:35:24 +00:00
|
|
|
text{* In our scenario, content has three different types of addressees:
|
|
|
|
\<^item> the @{emph \<open>examiner\<close>}, i.e. the author of the exam,
|
|
|
|
\<^item> the @{emph \<open>student\<close>}, i.e. the addressee of the exam,
|
|
|
|
\<^item> the @{emph \<open>validator\<close>}, i.e. a person that checks the exam for
|
|
|
|
feasibility and non-ambiguity.
|
|
|
|
|
|
|
|
Note that the latter quality assurance mechanism is used in many universities,
|
|
|
|
where for organizational reasons the execution of an exam takes place in facilities
|
|
|
|
where the author of the exam is not expected to be physically present.
|
|
|
|
*}
|
|
|
|
|
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
datatype Grade =
|
|
|
|
A1 | A2 | A3
|
2018-04-06 12:32:22 +00:00
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
doc_class Header =
|
2018-04-18 07:36:21 +00:00
|
|
|
examTitle :: string
|
2018-06-04 12:46:11 +00:00
|
|
|
examSubject :: "(Subject) list"
|
2018-04-30 11:13:53 +00:00
|
|
|
date :: string
|
|
|
|
timeAllowed :: int -- minutes
|
2018-04-17 09:14:52 +00:00
|
|
|
|
2018-04-29 10:42:00 +00:00
|
|
|
datatype ContentClass =
|
2018-06-07 11:56:15 +00:00
|
|
|
examiner -- \<open>the 'author' of the exam\<close>
|
2018-04-29 10:42:00 +00:00
|
|
|
| validator -- \<open>the 'proof-reader' of the exam\<close>
|
|
|
|
| student -- \<open>the victim ;-) ... \<close>
|
2018-04-17 13:24:19 +00:00
|
|
|
|
2018-04-29 10:42:00 +00:00
|
|
|
doc_class Exam_item =
|
|
|
|
concerns :: "ContentClass set"
|
2018-04-17 14:42:45 +00:00
|
|
|
|
2018-05-02 07:40:47 +00:00
|
|
|
type_synonym SubQuestion = string
|
2018-05-01 13:30:37 +00:00
|
|
|
|
2018-05-02 07:40:47 +00:00
|
|
|
doc_class Answer_Formal_Step = Exam_item +
|
|
|
|
justification :: string
|
|
|
|
"term" :: "string"
|
2018-05-01 13:30:37 +00:00
|
|
|
|
|
|
|
doc_class Answer_YesNo = Exam_item +
|
|
|
|
step_label :: string
|
|
|
|
yes_no :: bool -- \<open>for checkboxes\<close>
|
|
|
|
|
2018-04-29 10:42:00 +00:00
|
|
|
datatype Question_Type =
|
2018-05-01 13:30:37 +00:00
|
|
|
formal | informal | mixed
|
2018-04-29 09:35:24 +00:00
|
|
|
|
2018-05-02 07:40:47 +00:00
|
|
|
doc_class Task = Exam_item +
|
2018-04-29 10:42:00 +00:00
|
|
|
level :: Level
|
|
|
|
type :: Question_Type
|
2018-05-02 07:40:47 +00:00
|
|
|
subitems :: "(SubQuestion * (Answer_Formal_Step list + Answer_YesNo)list) list"
|
2018-04-29 10:42:00 +00:00
|
|
|
concerns :: "ContentClass set" <= "{examiner,validator,student}"
|
|
|
|
mark :: int
|
2018-05-01 13:30:37 +00:00
|
|
|
|
2018-04-29 10:42:00 +00:00
|
|
|
|
|
|
|
doc_class Exercise = Exam_item +
|
2018-05-02 07:40:47 +00:00
|
|
|
content :: "(Task) list"
|
2018-04-29 10:42:00 +00:00
|
|
|
concerns :: "ContentClass set" <= "{examiner,validator,student}"
|
2018-04-30 11:13:53 +00:00
|
|
|
|
2018-04-29 10:42:00 +00:00
|
|
|
|
|
|
|
text{* In many institutions, it makes sense to have a rigorous process of validation
|
|
|
|
for exam subjects : is the initial question correct ? Is a proof in the sense of the
|
|
|
|
question possible ? We model the possibility that the @{term examiner} validates a
|
|
|
|
question by a sample proof validated by Isabelle. In our scenario this sample proofs
|
|
|
|
are completely @{emph \<open>intern\<close>}, i.e. not exposed to the students but just additional
|
|
|
|
material for the internal review process of the exam.*}
|
|
|
|
|
|
|
|
doc_class Validation =
|
|
|
|
tests :: "term list" <="[]"
|
|
|
|
proofs :: "thm list" <="[]"
|
|
|
|
|
|
|
|
doc_class Solution = Exam_item +
|
2018-05-11 13:51:26 +00:00
|
|
|
content :: "Exercise list"
|
2018-04-29 10:42:00 +00:00
|
|
|
valids :: "Validation list"
|
|
|
|
concerns :: "ContentClass set" <= "{examiner,validator}"
|
2018-04-29 09:35:24 +00:00
|
|
|
|
2018-04-17 14:42:45 +00:00
|
|
|
doc_class MathExam=
|
|
|
|
content :: "(Header + Author + Exercise) list"
|
2018-04-29 10:42:00 +00:00
|
|
|
global_grade :: Grade
|
2018-05-11 13:51:26 +00:00
|
|
|
where "\<lbrace>Author\<rbrace>\<^sup>+ ~~ Header ~~ \<lbrace>Exercise ~~ Solution\<rbrace>\<^sup>+ "
|
2018-04-29 10:42:00 +00:00
|
|
|
|
2018-04-06 12:25:21 +00:00
|
|
|
end
|