Closed jonnybest closed 12 years ago
upon further investigation, the lemmas are also misshaped:
(assert
; 1. lemma for join_2x1. direction: join to in
(forall ((a0 Atom)(a1 Atom)(r Rel2)) (=> (in_1 a0 (join_2x1 r (a2r_2 a1))) (in_2 a0 a1 r)))
)
(assert
; 2. lemma for join_2x1. direction: in to join
(forall ((a0 Atom)(a1 Atom)(r Rel2)) (=> (in_2 a0 a1 r) (in_1 a0 (join_2x1 r (a2r_2 a1)))))
)
they invoke the wrong a2r function
the misshaped lemma and axiom were actually different problems. I fixed the misshaped lemma by properly calling a2r. I fixed the join axiom by changing the way the left hand tuple and the right hand tuple were generated. the previous way worked for all joins with arity = 1 on the left hand argument, but it ignored the actual meaning of the missing atom X and its position within the left hand tuple.
The axiom for join_2x1 results in:
This assertion is invalid, because in_2 is not defined for B, which is of Rel1.