SIMPLE_QUANT_INSTANTIATE_CONVquantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV : conv
A conversion for instantiating quantifiers. In contrast to
quantHeuristicsLib.QUANT_INSTANTIATE_CONV it only searches
for gap guesses without free variables. As a result, it is much less
powerful, but also much faster than
quantHeuristicsLib.QUANT_INSTANTIATE_CONV.
If no instantiation could be found.
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``?x. P x /\ (x = 5)``
val it = ⊢ (∃x. P x ∧ x = 5) ⇔ P 5 ∧ 5 = 5: thm
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``!x. (x = 5) ==> P x``
val it = ⊢ (∀x. x = 5 ⇒ P x) ⇔ 5 = 5 ⇒ P 5: thm
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``!x. Q x ==> !z. Z z /\ (x = 5) ==> P x z``
val it =
⊢ (∀x. Q x ⇒ ∀z. Z z ∧ x = 5 ⇒ P x z) ⇔ Q 5 ⇒ ∀z. Z z ∧ 5 = 5 ⇒ P 5 z: thm
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``!x. ((3, x, y) = zxy) ==> P x``
val it =
⊢ (∀x. (3,x,y) = zxy ⇒ P x) ⇔
(3,FST (SND zxy),y) = zxy ⇒ P (FST (SND zxy)): thm
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``some x. (x = 2) /\ P x``
val it = ⊢ (some x. x = 2 ∧ P x) = if 2 = 2 ∧ P 2 then SOME 2 else NONE: thm
> quantHeuristicsLib.SIMPLE_QUANT_INSTANTIATE_CONV ``?x1 x2 x3. P x1 x2 /\ (x2::x1::l = 3::(f x3)::l')``
val it =
⊢ (∃x1 x2 x3. P x1 x2 ∧ x2::x1::l = 3::f x3::l') ⇔
∃x2 x3. P (f x3) x2 ∧ x2::f x3::l = 3::f x3::l': thm
quantHeuristicsLib.QUANT_INSTANTIATE_CONV,
unwind.UNWIND_EXISTS_CONV,
unwind.UNWIND_FORALL_CONV,
quantHeuristicsLib.SIMPLE_QUANT_INST_ss,
bossLib.SQI_ss