src/ZF/Constructible/MetaExists.thy
author wenzelm
Tue, 13 Sep 2022 09:38:02 +0200
changeset 76129 5979f73b9db1
parent 69587 53982d5ec0bb
child 76213 e44d86131648
permissions -rw-r--r--
clarified signature: separate unrelated modules;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13505
52a16cb7fefb Relativized right up to L satisfies V=L!
paulson
parents: 13315
diff changeset
     1
(*  Title:      ZF/Constructible/MetaExists.thy
52a16cb7fefb Relativized right up to L satisfies V=L!
paulson
parents: 13315
diff changeset
     2
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
52a16cb7fefb Relativized right up to L satisfies V=L!
paulson
parents: 13315
diff changeset
     3
*)
52a16cb7fefb Relativized right up to L satisfies V=L!
paulson
parents: 13315
diff changeset
     4
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58871
diff changeset
     5
section\<open>The meta-existential quantifier\<close>
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
     6
65449
c82e63b11b8b clarified main ZF.thy / ZFC.thy, and avoid name clash with global HOL/Main.thy;
wenzelm
parents: 61393
diff changeset
     7
theory MetaExists imports ZF begin
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
     8
61393
8673ec68c798 tuned syntax -- more symbols;
wenzelm
parents: 60770
diff changeset
     9
text\<open>Allows quantification over any term.  Used to quantify over classes.
8673ec68c798 tuned syntax -- more symbols;
wenzelm
parents: 60770
diff changeset
    10
Yields a proposition rather than a FOL formula.\<close>
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    11
21233
5a5c8ea5f66a tuned specifications;
wenzelm
parents: 16417
diff changeset
    12
definition
69587
53982d5ec0bb isabelle update -u mixfix_cartouches;
wenzelm
parents: 65449
diff changeset
    13
  ex :: "(('a::{}) \<Rightarrow> prop) \<Rightarrow> prop"  (binder \<open>\<Or>\<close> 0) where
61393
8673ec68c798 tuned syntax -- more symbols;
wenzelm
parents: 60770
diff changeset
    14
  "ex(P) == (\<And>Q. (\<And>x. PROP P(x) \<Longrightarrow> PROP Q) \<Longrightarrow> PROP Q)"
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    15
61393
8673ec68c798 tuned syntax -- more symbols;
wenzelm
parents: 60770
diff changeset
    16
lemma meta_exI: "PROP P(x) ==> (\<Or>x. PROP P(x))"
13315
wenzelm
parents: 13314
diff changeset
    17
proof (unfold ex_def)
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    18
  assume P: "PROP P(x)"
13315
wenzelm
parents: 13314
diff changeset
    19
  fix Q
wenzelm
parents: 13314
diff changeset
    20
  assume PQ: "\<And>x. PROP P(x) \<Longrightarrow> PROP Q"
wenzelm
parents: 13314
diff changeset
    21
  from P show "PROP Q" by (rule PQ)
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    22
qed 
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    23
61393
8673ec68c798 tuned syntax -- more symbols;
wenzelm
parents: 60770
diff changeset
    24
lemma meta_exE: "[|\<Or>x. PROP P(x);  \<And>x. PROP P(x) ==> PROP R |] ==> PROP R"
13315
wenzelm
parents: 13314
diff changeset
    25
proof (unfold ex_def)
13314
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    26
  assume QPQ: "\<And>Q. (\<And>x. PROP P(x) \<Longrightarrow> PROP Q) \<Longrightarrow> PROP Q"
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    27
  assume PR: "\<And>x. PROP P(x) \<Longrightarrow> PROP R"
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    28
  from PR show "PROP R" by (rule QPQ)
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    29
qed
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    30
84b9de3cbc91 Defining a meta-existential quantifier.
paulson
parents:
diff changeset
    31
end