This Isar code triggers an error "Ill-formed introduction rule",
declare Pure.conjunctionI[intro]
where the Pure.conjunctionI
is PROP ?A ⟹ PROP ?B ⟹ PROP ?A &&& PROP ?B
Why? Isn't it an introduction rule??
The same problem is actually hindering me. I have defined a constant for certain purpose, let's say MyConj :: prop => prop => prop
where MyConj = (&&&)
, and the same error "Ill-formed introduction rule" occurs when I'm trying to declare the introduction rule for it, that PROP P ⟹ PROP Q ⟹ PROP MyConj (RPOP P) (PROP Q)
.
why don't you use standard HOL conjunction instead of Pure conjuction?
Anyway given that intro
is defined in HOL.thy
, I don't expect it to work on &&&…
Mathias Fleury said:
why don't you use standard HOL conjunction instead of Pure conjuction?
for some purpose it's better to be defined in the meta logic (the Pure logic) I think. Let's just talk about the situation for &&&
, and it's interesting and unexpected, right?
Interesting? Maybe.
Unexpected? Not really, since intro is HOL specific…
Mathias Fleury said:
Anyway given that
intro
is defined inHOL.thy
, I don't expect it to work on &&&…
The intro
attribute is defined in src/Provers/classical.ML
... Is it really restricted to HOL?
$ grep -r "classical.ML" *
src/HOL/HOL.thy:ML_file \<open>~~/src/Provers/classical.ML\<close>
src/FOL/FOL.thy:ML_file \<open>~~/src/Provers/classical.ML\<close>
so not limited to HOL, but only used in _instantiations_ not in Pure
Okay... fine
Last updated: Dec 21 2024 at 16:20 UTC