File: MP_CONV.doc

package info (click to toggle)
hol-light 20230128-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 45,636 kB
  • sloc: ml: 688,681; cpp: 439; makefile: 302; lisp: 286; java: 279; sh: 251; yacc: 108; perl: 78; ansic: 57; sed: 39; python: 13
file content (38 lines) | stat: -rw-r--r-- 1,141 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
\DOC MP_CONV

\TYPE {MP_CONV : conv -> thm -> thm}

\SYNOPSIS
Removes antecedent of implication theorem by solving it with a conversion.

\DESCRIBE
The call {MP_CONV conv th}, where the theorem {th} has the form {A |- p ==> q},
attempts to solve the antecedent {p} by applying the conversion {conv} to it.
If this conversion returns either {|- p} or {|- p <=> T}, then {MP_CONV}
returns {A |- q}. Otherwise it fails.

\FAILURE
Fails if the conclusion of the theorem is not implicational or if the
conversion fails to prove its antecedent.

\EXAMPLE
Suppose we generate this `epsilon-delta' theorem:
{
  # let th = MESON[LE_REFL]
     `(!e. &0 < e / &2 <=> &0 < e) /\
      (!a x y e. abs(x - a) < e / &2 /\ abs(y - a) < e / &2 ==> abs(x - y) < e)
      ==> (!e. &0 < e ==> ?n. !m. n <= m ==> abs(x m - a) < e)
          ==> (!e. &0 < e ==> ?n. !m. n <= m ==> abs(x m - x n) < e)`;;
}
\noindent We can eliminate the antecedent:
{
  # MP_CONV REAL_ARITH th;;
  val it : thm =
    |- (!e. &0 < e ==> (?n. !m. n <= m ==> abs (x m - a) < e))
       ==> (!e. &0 < e ==> (?n. !m. n <= m ==> abs (x m - x n) < e))
}

\SEEALSO
MP, MATCH_MP.

\ENDDOC