summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c59
1 files changed, 0 insertions, 59 deletions
diff --git a/eval.c b/eval.c
deleted file mode 100644
index 9132272..0000000
--- a/eval.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <stdlib.h>
-#include "eval.h"
-#include "stdio.h"
-#include "parse.h"
-char just_is_sound(line_t line, lineSet_t lines) {
- prop_t prop = line.proposition;
- just_t just = line.justification;
- prop_t a, b, w, x, y, z;
- line_t wl, xl, yl, zl;
- switch (just.rule) {
- case PREMISE_R:
- return 1;
- case ASSUMPTION_R:
- return 1;
- case CONJUNCT_INTRO:
- a = *prop.propA;
- b = *prop.propB;
- wl = lines.lines[just.references[0] - 1];
- xl = lines.lines[just.references[1] - 1];
- w = wl.proposition;
- x = xl.proposition;
- /* the references are in a deeper scope than the justification */
- if (!seqlt(line.scope, wl.scope) || !seqlt(line.scope, xl.scope)) {
- return 0;
- }
- return (peq(a, w) && peq(b, x)) || (peq(a, x) && peq(b, w));
- case DISJUNCT_INTRO:
- a = *prop.propA;
- b = *prop.propB;
- w = lines.lines[just.references[0] - 1].proposition;
- return peq(a, w) || peq(b, w);
- case IMPLICATION_INTRO:
- a = *prop.propA;
- b = *prop.propB;
- wl = lines.lines[just.references[0] - 1];
- xl = lines.lines[just.references[1] - 1];
- line_t as;
- line_t res;
- /* find the positions of the arguments */
- if (peq(a, wl.proposition) && peq(b, xl.proposition)) {
- as = wl;
- res = xl;
- }
- else if (peq(a, xl.proposition) && peq(b, wl.proposition)) {
- as = xl;
- res = wl;
- }
- else {
- return 0;
- }
- /* ensure that the arguments are in the correct scope */
- return as.scope.id == res.scope.id && as.scope.depth == line.scope.depth + 1;
- case CONJUNCT_ELIM:
- w = lines.lines[just.references[0] - 1].proposition;
- return peq(prop, *w.propA) || peq(prop, *w.propB);
- default:
- return 0;
- }
-}