···11+\date{2025-11-25T20:14:40Z}
22+\author{liamoc}
33+\title{Universal Quantifiers}
44+\taxon{Definition}
55+\parent{isa-0002}
66+\import{shiki-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{axiomatization
1010+ All :: ‹('a ⇒ bool) ⇒ bool› (binder "∀" 10)
1111+ where
1212+ allI : ‹⟦ ⋀x. P x ⟧ ⟹ ∀ x. P x› and
1313+ spec : ‹∀ a. P a ⟹ P x›
1414+}
+14
trees/isa/isa-000O.tree
···11+\date{2025-11-25T20:14:40Z}
22+\author{liamoc}
33+\title{Existential Quantifiers}
44+\taxon{Definition}
55+\parent{isa-0002}
66+\import{shiki-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{axiomatization
1010+ Ex :: ‹('a ⇒ bool) ⇒ bool› (binder "∃" 10)
1111+where
1212+ exI : ‹⟦ P x ⟧ ⟹ ∃a. P a› and
1313+ exE : ‹⟦ ∃ x. P x ; ⋀a. P a ⟹ R ⟧ ⟹ R›
1414+}
+15
trees/isa/isa-000P.tree
···11+\date{2025-11-27T05:02:46Z}
22+\taxon{Theorem}
33+\title{Universal Quantifier Elimination}
44+\author{liamoc}
55+\import{shiki-macros}
66+\parent{isa-0002}
77+\import{dt-macros}
88+\put\shiki/language{Isabelle Theory}
99+1010+\shiki{lemma allE : ‹⟦ ∀a. P a; P x ⟹ R ⟧ ⟹ R›}
1111+1212+\solnblock{\shiki{apply (drule_tac x = x in spec)
1313+ apply assumption
1414+ done}}
1515+
+16
trees/isa/isa-000Q.tree
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Example}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹∀x. ¬ P x ⟹ ¬ (∃x. P x)›}
1010+1111+\solnblock{\shiki{apply (rule notI)
1212+apply (erule exE)
1313+apply (erule_tac x = a in allE)
1414+apply (erule notE)
1515+apply assumption
1616+done}}
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Example}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹∃ x y. P x y ⟹ ∃ y x. P x y›}
1010+1111+\solnblock{\shiki{apply (elim exE)
1212+apply (intro exI)
1313+apply assumption
1414+done}}
1515+1616+
+18
trees/isa/isa-000T.tree
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Exercise}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹∃ x. P x ⟶ Q ⟹ (∀ x. P x) ⟶ Q›}
1010+1111+\solnblock{\shiki{apply (intro impI)
1212+apply (elim exE)
1313+apply (drule_tac x = a in spec)
1414+apply (drule mp, assumption)
1515+apply assumption
1616+done}}
1717+1818+
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Exercise}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹ ∃ x. P x ⟶ Q x ⟹ (∀ x. P x) ⟶ (∃ x. Q x)›}
1010+1111+\solnblock{\shiki{apply (rule impI)
1212+apply (elim exE)
1313+apply (drule_tac x = a in spec)
1414+apply (drule mp, assumption)
1515+apply (rule exI)
1616+apply assumption
1717+done}}
1818+1919+
+24
trees/isa/isa-000X.tree
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Exercise}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹∀ x. ¬ R x ⟶ R (M x) ⟹ ∀ x. R x ∨ R (M x)›}
1010+1111+\solnblock{\shiki{apply (intro allI)
1212+apply (erule_tac x = x in allE)
1313+apply (rule ccontr)
1414+apply (erule impE)
1515+ apply (rule notI)
1616+ apply (erule notE)
1717+ apply (rule disjI1)
1818+ apply assumption
1919+apply (erule notE)
2020+apply (rule disjI2)
2121+apply assumption
2222+done}}
2323+2424+
+28
trees/isa/isa-000Y.tree
···11+\date{2025-11-27T04:46:18Z}
22+\taxon{Exercise}
33+\author{liamoc}
44+\import{shiki-macros}
55+\parent{isa-0002}
66+\import{dt-macros}
77+\put\shiki/language{Isabelle Theory}
88+99+\shiki{lemma ‹⟦∀ x. ¬ R x ⟶ R (M x); ∃ x. R x ⟧ ⟹ ∃ x. R x ∧ R (M (M x))›}
1010+1111+\solnblock{\shiki{apply (erule exE)
1212+apply (frule_tac x = a in allE, assumption)
1313+apply (drule_tac x = a in spec)
1414+apply (frule_tac x = "M a" in spec)
1515+apply (drule_tac x = "M (M a)" in spec)
1616+apply (drule imp_as_disj)+
1717+apply (elim disjE)
1818+ apply (rule_tac x = a in exI; intro conjI; assumption)
1919+ apply (rule_tac x = "M a" in exI; intro conjI; assumption)
2020+ apply (rule_tac x = a in exI; intro conjI; assumption)
2121+ apply (rule_tac x = a in exI; intro conjI; assumption)
2222+ apply (rule_tac x = a in exI; intro conjI; assumption)
2323+ apply (rule_tac x = "M a" in exI; intro conjI; assumption)
2424+ apply (rule_tac x = a in exI; intro conjI; assumption)
2525+apply (rule_tac x = a in exI; intro conjI; assumption)
2626+done}}
2727+2828+