Structure quantHeuristicsTheory


Source File Identifier index Theory binding index

signature quantHeuristicsTheory =
sig
  type thm = Thm.thm
  
  (*  Definitions  *)
    val GUESS_EXISTS_GAP_def : thm
    val GUESS_EXISTS_POINT_def : thm
    val GUESS_EXISTS_def : thm
    val GUESS_FORALL_GAP_def : thm
    val GUESS_FORALL_POINT_def : thm
    val GUESS_FORALL_def : thm
    val IS_REMOVABLE_QUANT_FUN_def : thm
    val SIMPLE_GUESS_EXISTS_def : thm
    val SIMPLE_GUESS_FORALL_def : thm
  
  (*  Theorems  *)
    val CONJ_NOT_OR_THM : thm
    val CONS_EQ_REWRITE : thm
    val DISJ_IMP_INTRO : thm
    val EXISTS_NOT_FORALL_THM : thm
    val FST_PAIR_EQ : thm
    val FST_PAIR_EQ_SYM : thm
    val GUESSES_NEG_DUALITY : thm
    val GUESSES_NEG_REWRITE : thm
    val GUESSES_UEXISTS_THM1 : thm
    val GUESSES_UEXISTS_THM2 : thm
    val GUESSES_UEXISTS_THM3 : thm
    val GUESSES_UEXISTS_THM4 : thm
    val GUESSES_WEAKEN_THM : thm
    val GUESS_EXISTS_FORALL_REWRITES : thm
    val GUESS_EXISTS_POINT_THM : thm
    val GUESS_EXISTS_THM : thm
    val GUESS_FORALL_POINT_THM : thm
    val GUESS_FORALL_THM : thm
    val GUESS_POINT_THM : thm
    val GUESS_REWRITES : thm
    val GUESS_RULES_BOOL : thm
    val GUESS_RULES_COND : thm
    val GUESS_RULES_CONJ : thm
    val GUESS_RULES_CONSTANT_EXISTS : thm
    val GUESS_RULES_CONSTANT_FORALL : thm
    val GUESS_RULES_DISJ : thm
    val GUESS_RULES_ELIM_UNIT : thm
    val GUESS_RULES_EQUATION_EXISTS_GAP : thm
    val GUESS_RULES_EQUATION_EXISTS_POINT : thm
    val GUESS_RULES_EQUATION_FORALL_POINT : thm
    val GUESS_RULES_EQUIV : thm
    val GUESS_RULES_EXISTS : thm
    val GUESS_RULES_EXISTS_UNIQUE : thm
    val GUESS_RULES_EXISTS___NEW_FV : thm
    val GUESS_RULES_EXISTS___NEW_FV_1 : thm
    val GUESS_RULES_FORALL : thm
    val GUESS_RULES_FORALL___NEW_FV : thm
    val GUESS_RULES_FORALL___NEW_FV_1 : thm
    val GUESS_RULES_IMP : thm
    val GUESS_RULES_NEG : thm
    val GUESS_RULES_ONE_CASE___EXISTS_GAP : thm
    val GUESS_RULES_ONE_CASE___FORALL_GAP : thm
    val GUESS_RULES_STRENGTHEN_EXISTS_POINT : thm
    val GUESS_RULES_STRENGTHEN_FORALL_GAP : thm
    val GUESS_RULES_TRIVIAL_EXISTS_POINT : thm
    val GUESS_RULES_TRIVIAL_FORALL_POINT : thm
    val GUESS_RULES_TWO_CASES : thm
    val GUESS_RULES_WEAKEN_EXISTS_GAP : thm
    val GUESS_RULES_WEAKEN_FORALL_POINT : thm
    val HD_TL_EQ_1 : thm
    val HD_TL_EQ_NIL_1_bothways : thm
    
    val IMP_NEG_CONTRA : thm
    val INL_NEQ_ELIM : thm
    val INR_NEQ_ELIM : thm
    val ISL_exists : thm
    val ISR_exists : thm
    val IS_REMOVABLE_QUANT_FUN___EXISTS_THM : thm
    val IS_REMOVABLE_QUANT_FUN___FORALL_THM : thm
    val IS_SOME_EQ_NOT_NONE : thm
    val LEFT_IMP_AND_INTRO : thm
    val LEFT_IMP_OR_INTRO : thm
    val LENGTH_LE_NUM : thm
    val LENGTH_LE_PLUS : thm
    val LENGTH_NIL_SYM : thm
    val LENGTH_TO_EXISTS_CONS : thm
    val LIST_LENGTH_0 : thm
    val LIST_LENGTH_1 : thm
    
    
    
    
    
    
    
    
    
    val LIST_LENGTH_COMPARE_1 : thm
    val LIST_LENGTH_COMPARE_SUC : thm
    val MOVE_EXISTS_IMP_THM : thm
    val PAIR_EQ_EXPAND : thm
    val PAIR_EQ_SIMPLE_EXPAND : thm
    val RIGHT_IMP_AND_INTRO : thm
    val RIGHT_IMP_OR_INTRO : thm
    val SIMPLE_GUESS_EXISTS_ALT_DEF : thm
    val SIMPLE_GUESS_EXISTS_AND_1 : thm
    val SIMPLE_GUESS_EXISTS_AND_2 : thm
    val SIMPLE_GUESS_EXISTS_EQ_1 : thm
    val SIMPLE_GUESS_EXISTS_EQ_2 : thm
    val SIMPLE_GUESS_EXISTS_EQ_FUN : thm
    val SIMPLE_GUESS_EXISTS_EQ_T : thm
    val SIMPLE_GUESS_EXISTS_EXISTS : thm
    val SIMPLE_GUESS_EXISTS_FORALL : thm
    val SIMPLE_GUESS_EXISTS_NEG : thm
    val SIMPLE_GUESS_EXISTS_THM : thm
    val SIMPLE_GUESS_FORALL_ALT_DEF : thm
    val SIMPLE_GUESS_FORALL_EXISTS : thm
    val SIMPLE_GUESS_FORALL_FORALL : thm
    val SIMPLE_GUESS_FORALL_IMP_1 : thm
    val SIMPLE_GUESS_FORALL_IMP_2 : thm
    val SIMPLE_GUESS_FORALL_NEG : thm
    val SIMPLE_GUESS_FORALL_OR_1 : thm
    val SIMPLE_GUESS_FORALL_OR_2 : thm
    val SIMPLE_GUESS_FORALL_THM : thm
    val SIMPLE_GUESS_SELECT_THM : thm
    val SIMPLE_GUESS_SOME_THM : thm
    val SIMPLE_GUESS_UEXISTS_THM : thm
    val SND_PAIR_EQ : thm
    val SND_PAIR_EQ_SYM : thm
    val SOME_THE_EQ : thm
    val SOME_THE_EQ_SYM : thm
    val UNWIND_EXISTS_THM : thm
  
  val quantHeuristics_grammars : type_grammar.grammar * term_grammar.grammar
(*
   [ConseqConv] Parent theory of "quantHeuristics"
   
   [list] Parent theory of "quantHeuristics"
   
   [GUESS_EXISTS_GAP_def]  Definition
      
      ⊢ ∀i P. GUESS_EXISTS_GAP i P ⇔ ∀v. P v ⇒ ∃fv. v = i fv
   
   [GUESS_EXISTS_POINT_def]  Definition
      
      ⊢ ∀i P. GUESS_EXISTS_POINT i P ⇔ ∀fv. P (i fv)
   
   [GUESS_EXISTS_def]  Definition
      
      ⊢ ∀i P. GUESS_EXISTS i P ⇔ ((∃v. P v) ⇔ ∃fv. P (i fv))
   
   [GUESS_FORALL_GAP_def]  Definition
      
      ⊢ ∀i P. GUESS_FORALL_GAP i P ⇔ ∀v. ¬P v ⇒ ∃fv. v = i fv
   
   [GUESS_FORALL_POINT_def]  Definition
      
      ⊢ ∀i P. GUESS_FORALL_POINT i P ⇔ ∀fv. ¬P (i fv)
   
   [GUESS_FORALL_def]  Definition
      
      ⊢ ∀i P. GUESS_FORALL i P ⇔ ((∀v. P v) ⇔ ∀fv. P (i fv))
   
   [IS_REMOVABLE_QUANT_FUN_def]  Definition
      
      ⊢ ∀f. IS_REMOVABLE_QUANT_FUN f ⇔ ∀v. ∃x. f x = v
   
   [SIMPLE_GUESS_EXISTS_def]  Definition
      
      ⊢ ∀v i P. SIMPLE_GUESS_EXISTS v i P ⇔ P ⇒ (v = i)
   
   [SIMPLE_GUESS_FORALL_def]  Definition
      
      ⊢ ∀v i P. SIMPLE_GUESS_FORALL v i P ⇔ ¬P ⇒ (v = i)
   
   [CONJ_NOT_OR_THM]  Theorem
      
      ⊢ ∀A B. A ∧ B ⇔ ¬(¬A ∨ ¬B)
   
   [CONS_EQ_REWRITE]  Theorem
      
      ⊢ ((x::xs = ys) ⇔ 1 ≤ LENGTH ys ∧ (x = HD ys) ∧ (xs = TL ys)) ∧
        ((ys = x::xs) ⇔ 1 ≤ LENGTH ys ∧ (HD ys = x) ∧ (TL ys = xs)) ∧
        (0 < n ⇒ (n ≤ LENGTH (TL ys) ⇔ n + 1 ≤ LENGTH ys)) ∧
        (n ≤ m ⇒ (n ≤ rhs ∧ m ≤ rhs ⇔ m ≤ rhs)) ∧
        (([] = TL ys) ⇔ LENGTH ys ≤ 1) ∧ ((TL ys = []) ⇔ LENGTH ys ≤ 1) ∧
        (LENGTH (TL ys) ≤ n ⇔ LENGTH ys ≤ n + 1) ∧
        (m ≤ n ∧ n ≤ m ⇔ (m = n)) ∧
        (m ≤ LENGTH ys ∧ (n = LENGTH ys) ⇔ m ≤ n ∧ (n = LENGTH ys))
   
   [DISJ_IMP_INTRO]  Theorem
      
      ⊢ (∀x. P x ∨ Q x) ⇒ (¬P y ⇒ Q y) ∧ (¬Q y ⇒ P y)
   
   [EXISTS_NOT_FORALL_THM]  Theorem
      
      ⊢ ∀P. (∃x. P x) ⇔ ¬∀x. ¬P x
   
   [FST_PAIR_EQ]  Theorem
      
      ⊢ ∀p p2. ((FST p,p2) = p) ⇔ (p2 = SND p)
   
   [FST_PAIR_EQ_SYM]  Theorem
      
      ⊢ ∀p p2. (p = (FST p,p2)) ⇔ (SND p = p2)
   
   [GUESSES_NEG_DUALITY]  Theorem
      
      ⊢ (GUESS_EXISTS i ($¬ ∘ P) ⇔ GUESS_FORALL i P) ∧
        (GUESS_FORALL i ($¬ ∘ P) ⇔ GUESS_EXISTS i P) ∧
        (GUESS_EXISTS_GAP i ($¬ ∘ P) ⇔ GUESS_FORALL_GAP i P) ∧
        (GUESS_FORALL_GAP i ($¬ ∘ P) ⇔ GUESS_EXISTS_GAP i P) ∧
        (GUESS_EXISTS_POINT i ($¬ ∘ P) ⇔ GUESS_FORALL_POINT i P) ∧
        (GUESS_FORALL_POINT i ($¬ ∘ P) ⇔ GUESS_EXISTS_POINT i P)
   
   [GUESSES_NEG_REWRITE]  Theorem
      
      ⊢ (GUESS_EXISTS i (λx. ¬P x) ⇔ GUESS_FORALL i (λx. P x)) ∧
        (GUESS_FORALL i (λx. ¬P x) ⇔ GUESS_EXISTS i (λx. P x)) ∧
        (GUESS_EXISTS_GAP i (λx. ¬P x) ⇔ GUESS_FORALL_GAP i (λx. P x)) ∧
        (GUESS_FORALL_GAP i (λx. ¬P x) ⇔ GUESS_EXISTS_GAP i (λx. P x)) ∧
        (GUESS_EXISTS_POINT i (λx. ¬P x) ⇔ GUESS_FORALL_POINT i (λx. P x)) ∧
        (GUESS_FORALL_POINT i (λx. ¬P x) ⇔ GUESS_EXISTS_POINT i (λx. P x))
   
   [GUESSES_UEXISTS_THM1]  Theorem
      
      ⊢ ∀i P. GUESS_EXISTS (λx. i) P ⇒ ($?! P ⇔ P i ∧ ∀v. P v ⇒ (v = i))
   
   [GUESSES_UEXISTS_THM2]  Theorem
      
      ⊢ ∀i P. GUESS_EXISTS_GAP (λx. i) P ⇒ ($?! P ⇔ P i)
   
   [GUESSES_UEXISTS_THM3]  Theorem
      
      ⊢ ∀i P. GUESS_EXISTS_POINT (λx. i) P ⇒ ($?! P ⇔ ∀v. P v ⇒ (v = i))
   
   [GUESSES_UEXISTS_THM4]  Theorem
      
      ⊢ ∀i P.
          GUESS_EXISTS_POINT (λx. i) P ⇒
          GUESS_EXISTS_GAP (λx. i) P ⇒
          ($?! P ⇔ T)
   
   [GUESSES_WEAKEN_THM]  Theorem
      
      ⊢ (GUESS_FORALL_GAP i P ⇒ GUESS_FORALL i P) ∧
        (GUESS_FORALL_POINT i P ⇒ GUESS_FORALL i P) ∧
        (GUESS_EXISTS_POINT i P ⇒ GUESS_EXISTS i P) ∧
        (GUESS_EXISTS_GAP i P ⇒ GUESS_EXISTS i P)
   
   [GUESS_EXISTS_FORALL_REWRITES]  Theorem
      
      ⊢ (GUESS_EXISTS i P ⇔ ∀v. P v ⇒ ∃fv. P (i fv)) ∧
        (GUESS_FORALL i P ⇔ ∀v. ¬P v ⇒ ∃fv. ¬P (i fv))
   
   [GUESS_EXISTS_POINT_THM]  Theorem
      
      ⊢ ∀i P. GUESS_EXISTS_POINT i P ⇒ ($? P ⇔ T)
   
   [GUESS_EXISTS_THM]  Theorem
      
      ⊢ ∀i P. GUESS_EXISTS i P ⇒ ($? P ⇔ ∃fv. P (i fv))
   
   [GUESS_FORALL_POINT_THM]  Theorem
      
      ⊢ ∀i P. GUESS_FORALL_POINT i P ⇒ ($! P ⇔ F)
   
   [GUESS_FORALL_THM]  Theorem
      
      ⊢ ∀i P. GUESS_FORALL i P ⇒ ($! P ⇔ ∀fv. P (i fv))
   
   [GUESS_POINT_THM]  Theorem
      
      ⊢ (GUESS_EXISTS_POINT i P ⇒ ((∃v. P v) ⇔ T)) ∧
        (GUESS_FORALL_POINT i P ⇒ ((∀v. P v) ⇔ F))
   
   [GUESS_REWRITES]  Theorem
      
      ⊢ ((GUESS_EXISTS i P ⇔ ∀v. P v ⇒ ∃fv. P (i fv)) ∧
         (GUESS_FORALL i P ⇔ ∀v. ¬P v ⇒ ∃fv. ¬P (i fv))) ∧
        (∀i P. GUESS_EXISTS_POINT i P ⇔ ∀fv. P (i fv)) ∧
        (∀i P. GUESS_FORALL_POINT i P ⇔ ∀fv. ¬P (i fv)) ∧
        (∀i P. GUESS_EXISTS_GAP i P ⇔ ∀v. P v ⇒ ∃fv. v = i fv) ∧
        ∀i P. GUESS_FORALL_GAP i P ⇔ ∀v. ¬P v ⇒ ∃fv. v = i fv
   
   [GUESS_RULES_BOOL]  Theorem
      
      ⊢ GUESS_EXISTS_POINT (λARB. T) (λx. x) ∧
        GUESS_FORALL_POINT (λARB. F) (λx. x) ∧
        GUESS_EXISTS_GAP (λARB. T) (λx. x) ∧
        GUESS_FORALL_GAP (λARB. F) (λx. x)
   
   [GUESS_RULES_COND]  Theorem
      
      ⊢ (GUESS_FORALL_POINT i (λx. P x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. P x) ∧ GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS i (λx. P x) ∧ GUESS_EXISTS i (λx. Q x) ⇒
         GUESS_EXISTS i (λx. if bc then P x else Q x)) ∧
        (GUESS_FORALL i (λx. P x) ∧ GUESS_FORALL i (λx. Q x) ⇒
         GUESS_FORALL i (λx. if bc then P x else Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. P x) ∧ GUESS_EXISTS_GAP i (λx. Q x) ⇒
         GUESS_EXISTS_GAP i (λx. if b x then P x else Q x)) ∧
        (GUESS_FORALL_GAP i (λx. P x) ∧ GUESS_FORALL_GAP i (λx. Q x) ⇒
         GUESS_FORALL_GAP i (λx. if b x then P x else Q x)) ∧
        (GUESS_FORALL_POINT i (λx. b x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_FORALL_POINT i (λx. b x) ∧ GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. b x) ∧ GUESS_FORALL_POINT i (λx. P x) ⇒
         GUESS_FORALL_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. b x) ∧ GUESS_EXISTS_POINT i (λx. P x) ⇒
         GUESS_EXISTS_POINT i (λx. if b x then P x else Q x)) ∧
        (GUESS_FORALL_GAP i (λx. b x) ∧ GUESS_EXISTS_GAP i (λx. P x) ⇒
         GUESS_EXISTS_GAP i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. b x) ∧ GUESS_EXISTS_GAP i (λx. Q x) ⇒
         GUESS_EXISTS_GAP i (λx. if b x then P x else Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. b x) ∧ GUESS_FORALL_GAP i (λx. Q x) ⇒
         GUESS_FORALL_GAP i (λx. if b x then P x else Q x)) ∧
        (GUESS_FORALL_GAP i (λx. b x) ∧ GUESS_FORALL_GAP i (λx. P x) ⇒
         GUESS_FORALL_GAP i (λx. if b x then P x else Q x))
   
   [GUESS_RULES_CONJ]  Theorem
      
      ⊢ (GUESS_FORALL_POINT i (λx. P x) ⇒
         GUESS_FORALL_POINT i (λx. P x ∧ Q x)) ∧
        (GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. P x ∧ Q x)) ∧
        (GUESS_FORALL i (λx. P x) ∧ GUESS_FORALL i (λx. Q x) ⇒
         GUESS_FORALL i (λx. P x ∧ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. P x) ∧ GUESS_FORALL_GAP i (λx. Q x) ⇒
         GUESS_FORALL_GAP i (λx. P x ∧ Q x)) ∧
        (GUESS_EXISTS (λxxx. iK) (λx. P x) ∧
         GUESS_EXISTS (λxxx. iK) (λx. Q x) ⇒
         GUESS_EXISTS (λxxx. iK) (λx. P x ∧ Q x)) ∧
        (GUESS_EXISTS i (λx. P x) ⇒ GUESS_EXISTS i (λx. P x ∧ q)) ∧
        (GUESS_EXISTS i (λx. Q x) ⇒ GUESS_EXISTS i (λx. p ∧ Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. P x) ∧ GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ∧ Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. P x) ⇒ GUESS_EXISTS_GAP i (λx. P x ∧ Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. Q x) ⇒ GUESS_EXISTS_GAP i (λx. P x ∧ Q x))
   
   [GUESS_RULES_CONSTANT_EXISTS]  Theorem
      
      ⊢ GUESS_EXISTS i (λx. p) ⇔ T
   
   [GUESS_RULES_CONSTANT_FORALL]  Theorem
      
      ⊢ GUESS_FORALL i (λx. p) ⇔ T
   
   [GUESS_RULES_DISJ]  Theorem
      
      ⊢ (GUESS_EXISTS_POINT i (λx. P x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ∨ Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ∨ Q x)) ∧
        (GUESS_EXISTS i (λx. P x) ∧ GUESS_EXISTS i (λx. Q x) ⇒
         GUESS_EXISTS i (λx. P x ∨ Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. P x) ∧ GUESS_EXISTS_GAP i (λx. Q x) ⇒
         GUESS_EXISTS_GAP i (λx. P x ∨ Q x)) ∧
        (GUESS_FORALL (λxxx. iK) (λx. P x) ∧
         GUESS_FORALL (λxxx. iK) (λx. Q x) ⇒
         GUESS_FORALL (λxxx. iK) (λx. P x ∨ Q x)) ∧
        (GUESS_FORALL i (λx. P x) ⇒ GUESS_FORALL i (λx. P x ∨ q)) ∧
        (GUESS_FORALL i (λx. Q x) ⇒ GUESS_FORALL i (λx. p ∨ Q x)) ∧
        (GUESS_FORALL_POINT i (λx. P x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. P x ∨ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. P x) ⇒ GUESS_FORALL_GAP i (λx. P x ∨ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. Q x) ⇒ GUESS_FORALL_GAP i (λx. P x ∨ Q x))
   
   [GUESS_RULES_ELIM_UNIT]  Theorem
      
      ⊢ (GUESS_FORALL_POINT i vt ⇔ GUESS_FORALL_POINT (λx. i (x,())) vt) ∧
        (GUESS_EXISTS_POINT i vt ⇔ GUESS_EXISTS_POINT (λx. i (x,())) vt) ∧
        (GUESS_EXISTS i vt ⇔ GUESS_EXISTS (λx. i (x,())) vt) ∧
        (GUESS_FORALL i vt ⇔ GUESS_FORALL (λx. i (x,())) vt) ∧
        (GUESS_EXISTS_GAP i vt ⇔ GUESS_EXISTS_GAP (λx. i (x,())) vt) ∧
        (GUESS_FORALL_GAP i vt ⇔ GUESS_FORALL_GAP (λx. i (x,())) vt)
   
   [GUESS_RULES_EQUATION_EXISTS_GAP]  Theorem
      
      ⊢ ∀i. GUESS_EXISTS_GAP (λxxx. i) (λx. x = i)
   
   [GUESS_RULES_EQUATION_EXISTS_POINT]  Theorem
      
      ⊢ ∀i P Q. (P i = Q i) ⇒ GUESS_EXISTS_POINT (λxxx. i) (λx. P x = Q x)
   
   [GUESS_RULES_EQUATION_FORALL_POINT]  Theorem
      
      ⊢ ∀i P Q.
          (∀fv. P (i fv) ≠ Q (i fv)) ⇒ GUESS_FORALL_POINT i (λx. P x = Q x)
   
   [GUESS_RULES_EQUIV]  Theorem
      
      ⊢ (GUESS_EXISTS_POINT i (λx. P x) ∧ GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ⇔ Q x)) ∧
        (GUESS_FORALL_POINT i (λx. P x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ⇔ Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. P x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. P x ⇔ Q x)) ∧
        (GUESS_FORALL_POINT i (λx. P x) ∧ GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. P x ⇔ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. P1 x) ∧ GUESS_FORALL_GAP i (λx. P2 x) ⇒
         GUESS_FORALL_GAP i (λx. P1 x ⇔ P2 x)) ∧
        (GUESS_EXISTS_GAP i (λx. P1 x) ∧ GUESS_EXISTS_GAP i (λx. P2 x) ⇒
         GUESS_FORALL_GAP i (λx. P1 x ⇔ P2 x)) ∧
        (GUESS_EXISTS_GAP i (λx. P1 x) ∧ GUESS_FORALL_GAP i (λx. P2 x) ⇒
         GUESS_EXISTS_GAP i (λx. P1 x ⇔ P2 x)) ∧
        (GUESS_FORALL_GAP i (λx. P1 x) ∧ GUESS_EXISTS_GAP i (λx. P2 x) ⇒
         GUESS_EXISTS_GAP i (λx. P1 x ⇔ P2 x))
   
   [GUESS_RULES_EXISTS]  Theorem
      
      ⊢ ((∀y. GUESS_EXISTS_POINT i (λx. P x y)) ⇒
         GUESS_EXISTS_POINT i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS i (λx. P x y)) ⇒ GUESS_EXISTS i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP i (λx. P x y)) ⇒
         GUESS_EXISTS_GAP i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_FORALL_POINT i (λx. P x y)) ⇒
         GUESS_FORALL_POINT i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_FORALL (λxxx. iK) (λx. P x y)) ⇒
         GUESS_FORALL (λxxx. iK) (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP i (λx. P x y)) ⇒
         GUESS_FORALL_GAP i (λx. ∃y. P x y))
   
   [GUESS_RULES_EXISTS_UNIQUE]  Theorem
      
      ⊢ ((∀y. GUESS_FORALL_POINT i (λx. P x y)) ⇒
         GUESS_FORALL_POINT i (λx. ∃!y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP i (λx. P x y)) ⇒
         GUESS_EXISTS_GAP i (λx. ∃!y. P x y))
   
   [GUESS_RULES_EXISTS___NEW_FV]  Theorem
      
      ⊢ ((∀y. GUESS_EXISTS_POINT (iy y) (λx. P x y)) ⇒
         GUESS_EXISTS_POINT (λfv. iy (FST fv) (SND fv)) (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS (iy y) (λx. P x y)) ⇒
         GUESS_EXISTS (λfv. iy (FST fv) (SND fv)) (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP (iy y) (λx. P x y)) ⇒
         GUESS_EXISTS_GAP (λfv. iy (FST fv) (SND fv)) (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP (iy y) (λx. P x y)) ⇒
         GUESS_FORALL_GAP (λfv. iy (FST fv) (SND fv)) (λx. ∃y. P x y))
   
   [GUESS_RULES_EXISTS___NEW_FV_1]  Theorem
      
      ⊢ ((∀y. GUESS_EXISTS_POINT (λxxx. i y) (λx. P x y)) ⇒
         GUESS_EXISTS_POINT i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS (λxxx. i y) (λx. P x y)) ⇒
         GUESS_EXISTS i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP (λxxx. i y) (λx. P x y)) ⇒
         GUESS_EXISTS_GAP i (λx. ∃y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP (λxxx. i y) (λx. P x y)) ⇒
         GUESS_FORALL_GAP i (λx. ∃y. P x y))
   
   [GUESS_RULES_FORALL]  Theorem
      
      ⊢ ((∀y. GUESS_FORALL_POINT i (λx. P x y)) ⇒
         GUESS_FORALL_POINT i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL i (λx. P x y)) ⇒ GUESS_FORALL i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP i (λx. P x y)) ⇒
         GUESS_FORALL_GAP i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_EXISTS_POINT i (λx. P x y)) ⇒
         GUESS_EXISTS_POINT i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_EXISTS (λxxx. iK) (λx. P x y)) ⇒
         GUESS_EXISTS (λxxx. iK) (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP i (λx. P x y)) ⇒
         GUESS_EXISTS_GAP i (λx. ∀y. P x y))
   
   [GUESS_RULES_FORALL___NEW_FV]  Theorem
      
      ⊢ ((∀y. GUESS_FORALL_POINT (iy y) (λx. P x y)) ⇒
         GUESS_FORALL_POINT (λfv. iy (FST fv) (SND fv)) (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL (iy y) (λx. P x y)) ⇒
         GUESS_FORALL (λfv. iy (FST fv) (SND fv)) (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP (iy y) (λx. P x y)) ⇒
         GUESS_FORALL_GAP (λfv. iy (FST fv) (SND fv)) (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP (iy y) (λx. P x y)) ⇒
         GUESS_EXISTS_GAP (λfv. iy (FST fv) (SND fv)) (λx. ∀y. P x y))
   
   [GUESS_RULES_FORALL___NEW_FV_1]  Theorem
      
      ⊢ ((∀y. GUESS_FORALL_POINT (λxxx. i y) (λx. P x y)) ⇒
         GUESS_FORALL_POINT i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL (λxxx. i y) (λx. P x y)) ⇒
         GUESS_FORALL i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_FORALL_GAP (λxxx. i y) (λx. P x y)) ⇒
         GUESS_FORALL_GAP i (λx. ∀y. P x y)) ∧
        ((∀y. GUESS_EXISTS_GAP (λxxx. i y) (λx. P x y)) ⇒
         GUESS_EXISTS_GAP i (λx. ∀y. P x y))
   
   [GUESS_RULES_IMP]  Theorem
      
      ⊢ (GUESS_FORALL_POINT i (λx. P x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ⇒ Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. Q x) ⇒
         GUESS_EXISTS_POINT i (λx. P x ⇒ Q x)) ∧
        (GUESS_FORALL i (λx. P x) ∧ GUESS_EXISTS i (λx. Q x) ⇒
         GUESS_EXISTS i (λx. P x ⇒ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. P x) ∧ GUESS_EXISTS_GAP i (λx. Q x) ⇒
         GUESS_EXISTS_GAP i (λx. P x ⇒ Q x)) ∧
        (GUESS_EXISTS (λxxx. iK) (λx. P x) ∧
         GUESS_FORALL (λxxx. iK) (λx. Q x) ⇒
         GUESS_FORALL (λxxx. iK) (λx. P x ⇒ Q x)) ∧
        (GUESS_EXISTS i (λx. P x) ⇒ GUESS_FORALL i (λx. P x ⇒ q)) ∧
        (GUESS_FORALL i (λx. Q x) ⇒ GUESS_FORALL i (λx. p ⇒ Q x)) ∧
        (GUESS_EXISTS_POINT i (λx. P x) ∧ GUESS_FORALL_POINT i (λx. Q x) ⇒
         GUESS_FORALL_POINT i (λx. P x ⇒ Q x)) ∧
        (GUESS_EXISTS_GAP i (λx. P x) ⇒ GUESS_FORALL_GAP i (λx. P x ⇒ Q x)) ∧
        (GUESS_FORALL_GAP i (λx. Q x) ⇒ GUESS_FORALL_GAP i (λx. P x ⇒ Q x))
   
   [GUESS_RULES_NEG]  Theorem
      
      ⊢ (GUESS_EXISTS i (λx. P x) ⇒ GUESS_FORALL i (λx. ¬P x)) ∧
        (GUESS_EXISTS_GAP i (λx. P x) ⇒ GUESS_FORALL_GAP i (λx. ¬P x)) ∧
        (GUESS_EXISTS_POINT i (λx. P x) ⇒ GUESS_FORALL_POINT i (λx. ¬P x)) ∧
        (GUESS_FORALL i (λx. P x) ⇒ GUESS_EXISTS i (λx. ¬P x)) ∧
        (GUESS_FORALL_GAP i (λx. P x) ⇒ GUESS_EXISTS_GAP i (λx. ¬P x)) ∧
        (GUESS_FORALL_POINT i (λx. P x) ⇒ GUESS_EXISTS_POINT i (λx. ¬P x))
   
   [GUESS_RULES_ONE_CASE___EXISTS_GAP]  Theorem
      
      ⊢ ∀P Q. (∀x. ∃fv. x = Q fv) ⇒ GUESS_EXISTS_GAP Q P
   
   [GUESS_RULES_ONE_CASE___FORALL_GAP]  Theorem
      
      ⊢ ∀P Q. (∀x. ∃fv. x = Q fv) ⇒ GUESS_FORALL_GAP Q P
   
   [GUESS_RULES_STRENGTHEN_EXISTS_POINT]  Theorem
      
      ⊢ ∀P Q.
          (∀x. P x ⇒ Q x) ⇒ GUESS_EXISTS_POINT i P ⇒ GUESS_EXISTS_POINT i Q
   
   [GUESS_RULES_STRENGTHEN_FORALL_GAP]  Theorem
      
      ⊢ ∀P Q. (∀x. P x ⇒ Q x) ⇒ GUESS_FORALL_GAP i P ⇒ GUESS_FORALL_GAP i Q
   
   [GUESS_RULES_TRIVIAL_EXISTS_POINT]  Theorem
      
      ⊢ ∀i P. P i ⇒ GUESS_EXISTS_POINT (λxxx. i) P
   
   [GUESS_RULES_TRIVIAL_FORALL_POINT]  Theorem
      
      ⊢ ∀i P. ¬P i ⇒ GUESS_FORALL_POINT (λxxx. i) P
   
   [GUESS_RULES_TWO_CASES]  Theorem
      
      ⊢ ∀y Q.
          (∀x. (x = y) ∨ ∃fv. x = Q fv) ⇒ GUESS_FORALL_GAP Q (λx. x = y)
   
   [GUESS_RULES_WEAKEN_EXISTS_GAP]  Theorem
      
      ⊢ ∀P Q. (∀x. Q x ⇒ P x) ⇒ GUESS_EXISTS_GAP i P ⇒ GUESS_EXISTS_GAP i Q
   
   [GUESS_RULES_WEAKEN_FORALL_POINT]  Theorem
      
      ⊢ ∀P Q.
          (∀x. Q x ⇒ P x) ⇒ GUESS_FORALL_POINT i P ⇒ GUESS_FORALL_POINT i Q
   
   [HD_TL_EQ_1]  Theorem
      
      ⊢ ∀l. (HD l::TL l = l) ⇔ l ≠ []
   
   [HD_TL_EQ_NIL_1_bothways]  Theorem
      
      ⊢ (∀l. ([HD l] = l) ⇔ (LENGTH l = 1)) ∧
        ∀l. (l = [HD l]) ⇔ (LENGTH l = 1)
   
   [IMP_NEG_CONTRA]  Theorem
      
      ⊢ ∀P i x. ¬P i ⇒ P x ⇒ x ≠ i
   
   [INL_NEQ_ELIM]  Theorem
      
      ⊢ ((∀l. x ≠ INL l) ⇔ ISR x) ∧ ((∀l. INL l ≠ x) ⇔ ISR x)
   
   [INR_NEQ_ELIM]  Theorem
      
      ⊢ ((∀r. x ≠ INR r) ⇔ ISL x) ∧ ((∀r. INR r ≠ x) ⇔ ISL x)
   
   [ISL_exists]  Theorem
      
      ⊢ ISL x ⇔ ∃l. x = INL l
   
   [ISR_exists]  Theorem
      
      ⊢ ISR x ⇔ ∃r. x = INR r
   
   [IS_REMOVABLE_QUANT_FUN___EXISTS_THM]  Theorem
      
      ⊢ ∀f P. IS_REMOVABLE_QUANT_FUN f ⇒ ((∃x. P (f x)) ⇔ ∃x'. P x')
   
   [IS_REMOVABLE_QUANT_FUN___FORALL_THM]  Theorem
      
      ⊢ ∀f P. IS_REMOVABLE_QUANT_FUN f ⇒ ((∀x. P (f x)) ⇔ ∀x'. P x')
   
   [IS_SOME_EQ_NOT_NONE]  Theorem
      
      ⊢ ∀x. IS_SOME x ⇔ x ≠ NONE
   
   [LEFT_IMP_AND_INTRO]  Theorem
      
      ⊢ ∀x t1 t2. (t1 ⇒ t2) ⇒ x ∧ t1 ⇒ x ∧ t2
   
   [LEFT_IMP_OR_INTRO]  Theorem
      
      ⊢ ∀x t1 t2. (t1 ⇒ t2) ⇒ x ∨ t1 ⇒ x ∨ t2
   
   [LENGTH_LE_NUM]  Theorem
      
      ⊢ n ≤ LENGTH l ⇔ ∃l1 l2. (LENGTH l1 = n) ∧ (l = l1 ⧺ l2)
   
   [LENGTH_LE_PLUS]  Theorem
      
      ⊢ n + m ≤ LENGTH l ⇔
        ∃l1 l2. (LENGTH l1 = n) ∧ m ≤ LENGTH l2 ∧ (l = l1 ⧺ l2)
   
   [LENGTH_NIL_SYM]  Theorem
      
      ⊢ (0 = LENGTH l) ⇔ (l = [])
   
   [LENGTH_TO_EXISTS_CONS]  Theorem
      
      ⊢ (n < LENGTH xs ⇔ ∃y ys. (xs = y::ys) ∧ n ≤ LENGTH ys) ∧
        (LENGTH xs > n ⇔ ∃y ys. (xs = y::ys) ∧ n ≤ LENGTH ys) ∧
        (0 < n ⇒
         ((LENGTH xs = n) ⇔ ∃y ys. (xs = y::ys) ∧ (LENGTH ys = PRE n))) ∧
        (0 < n ⇒
         ((n = LENGTH xs) ⇔ ∃y ys. (xs = y::ys) ∧ (LENGTH ys = PRE n))) ∧
        (0 < n ⇒ (n ≤ LENGTH xs ⇔ ∃y ys. (xs = y::ys) ∧ PRE n ≤ LENGTH ys)) ∧
        (0 < n ⇒ (LENGTH xs ≥ n ⇔ ∃y ys. (xs = y::ys) ∧ PRE n ≤ LENGTH ys)) ∧
        (0 < x ⇒ (PRE (x + y) = PRE x + y)) ∧
        (0 < y ⇒ (PRE (x + y) = x + PRE y))
   
   [LIST_LENGTH_0]  Theorem
      
      ⊢ ((LENGTH l = 0) ⇔ (l = [])) ∧ ((0 = LENGTH l) ⇔ (l = [])) ∧
        (LENGTH l < 1 ⇔ (l = [])) ∧ (1 > LENGTH l ⇔ (l = [])) ∧
        (0 ≥ LENGTH l ⇔ (l = [])) ∧ (LENGTH l ≤ 0 ⇔ (l = []))
   
   [LIST_LENGTH_1]  Theorem
      
      ⊢ ((LENGTH l = 1) ⇔ ∃e1. l = [e1]) ∧
        ((1 = LENGTH l) ⇔ ∃e1. l = [e1]) ∧
        (0 < LENGTH l ⇔ ∃l' e1. l = e1::l') ∧
        (LENGTH l > 0 ⇔ ∃l' e1. l = e1::l') ∧
        (1 ≤ LENGTH l ⇔ ∃l' e1. l = e1::l') ∧
        (LENGTH l ≥ 1 ⇔ ∃l' e1. l = e1::l') ∧
        (1 + x ≤ LENGTH l ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        (LENGTH l ≥ 1 + x ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        (x + 1 ≤ LENGTH l ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        (LENGTH l ≥ x + 1 ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        ((LENGTH l = 1 + x) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l')) ∧
        ((1 + x = LENGTH l) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l')) ∧
        ((LENGTH l = x + 1) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l')) ∧
        ((x + 1 = LENGTH l) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l')) ∧
        ((LENGTH l = 0) ⇔ (l = [])) ∧ ((0 = LENGTH l) ⇔ (l = [])) ∧
        (LENGTH l < 1 ⇔ (l = [])) ∧ (1 > LENGTH l ⇔ (l = [])) ∧
        (0 ≥ LENGTH l ⇔ (l = [])) ∧ (LENGTH l ≤ 0 ⇔ (l = []))
   
   [LIST_LENGTH_COMPARE_1]  Theorem
      
      ⊢ (LENGTH l < 1 ⇔ (l = [])) ∧ (1 > LENGTH l ⇔ (l = [])) ∧
        (0 ≥ LENGTH l ⇔ (l = [])) ∧ (LENGTH l ≤ 0 ⇔ (l = []))
   
   [LIST_LENGTH_COMPARE_SUC]  Theorem
      
      ⊢ (SUC x ≤ LENGTH l ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        (LENGTH l ≥ SUC x ⇔ ∃l' e1. x ≤ LENGTH l' ∧ (l = e1::l')) ∧
        ((LENGTH l = SUC x) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l')) ∧
        ((SUC x = LENGTH l) ⇔ ∃l' e1. (LENGTH l' = x) ∧ (l = e1::l'))
   
   [MOVE_EXISTS_IMP_THM]  Theorem
      
      ⊢ (∃x. (∀y. ¬P x y ⇒ R y) ⇒ Q x) ⇔ (∀y. ¬(∀x. P x y) ⇒ R y) ⇒ ∃x. Q x
   
   [PAIR_EQ_EXPAND]  Theorem
      
      ⊢ (((x,y) = X) ⇔ (x = FST X) ∧ (y = SND X)) ∧
        ((X = (x,y)) ⇔ (FST X = x) ∧ (SND X = y))
   
   [PAIR_EQ_SIMPLE_EXPAND]  Theorem
      
      ⊢ (((x,y) = (x,y')) ⇔ (y = y')) ∧ (((y,x) = (y',x)) ⇔ (y = y')) ∧
        (((FST X,y) = X) ⇔ (y = SND X)) ∧ (((x,SND X) = X) ⇔ (x = FST X)) ∧
        ((X = (FST X,y)) ⇔ (SND X = y)) ∧ ((X = (x,SND X)) ⇔ (FST X = x))
   
   [RIGHT_IMP_AND_INTRO]  Theorem
      
      ⊢ ∀x t1 t2. (t1 ⇒ t2) ⇒ t1 ∧ x ⇒ t2 ∧ x
   
   [RIGHT_IMP_OR_INTRO]  Theorem
      
      ⊢ ∀x t1 t2. (t1 ⇒ t2) ⇒ t1 ∨ x ⇒ t2 ∨ x
   
   [SIMPLE_GUESS_EXISTS_ALT_DEF]  Theorem
      
      ⊢ (∀v. SIMPLE_GUESS_EXISTS v i (P v)) ⇔
        GUESS_EXISTS_GAP (K i) (λv. P v)
   
   [SIMPLE_GUESS_EXISTS_AND_1]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_EXISTS v i P1 ⇒ SIMPLE_GUESS_EXISTS v i (P1 ∧ P2)
   
   [SIMPLE_GUESS_EXISTS_AND_2]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_EXISTS v i P2 ⇒ SIMPLE_GUESS_EXISTS v i (P1 ∧ P2)
   
   [SIMPLE_GUESS_EXISTS_EQ_1]  Theorem
      
      ⊢ ∀v i. SIMPLE_GUESS_EXISTS v i (v = i)
   
   [SIMPLE_GUESS_EXISTS_EQ_2]  Theorem
      
      ⊢ ∀v i. SIMPLE_GUESS_EXISTS v i (i = v)
   
   [SIMPLE_GUESS_EXISTS_EQ_FUN]  Theorem
      
      ⊢ ∀v i t1 t2 f.
          SIMPLE_GUESS_EXISTS v i (f t1 = f t2) ⇒
          SIMPLE_GUESS_EXISTS v i (t1 = t2)
   
   [SIMPLE_GUESS_EXISTS_EQ_T]  Theorem
      
      ⊢ ∀v. SIMPLE_GUESS_EXISTS v T v
   
   [SIMPLE_GUESS_EXISTS_EXISTS]  Theorem
      
      ⊢ ∀v i P.
          (∀v2. SIMPLE_GUESS_EXISTS v i (P v2)) ⇒
          SIMPLE_GUESS_EXISTS v i (∃v2. P v2)
   
   [SIMPLE_GUESS_EXISTS_FORALL]  Theorem
      
      ⊢ ∀v i P.
          (∀v2. SIMPLE_GUESS_EXISTS v i (P v2)) ⇒
          SIMPLE_GUESS_EXISTS v i (∀v2. P v2)
   
   [SIMPLE_GUESS_EXISTS_NEG]  Theorem
      
      ⊢ ∀v i P. SIMPLE_GUESS_FORALL v i P ⇒ SIMPLE_GUESS_EXISTS v i (¬P)
   
   [SIMPLE_GUESS_EXISTS_THM]  Theorem
      
      ⊢ ∀i P. (∀v. SIMPLE_GUESS_EXISTS v i (P v)) ⇒ ((∃v. P v) ⇔ P i)
   
   [SIMPLE_GUESS_FORALL_ALT_DEF]  Theorem
      
      ⊢ (∀v. SIMPLE_GUESS_FORALL v i (P v)) ⇔
        GUESS_FORALL_GAP (K i) (λv. P v)
   
   [SIMPLE_GUESS_FORALL_EXISTS]  Theorem
      
      ⊢ ∀v i P.
          (∀v2. SIMPLE_GUESS_FORALL v i (P v2)) ⇒
          SIMPLE_GUESS_FORALL v i (∃v2. P v2)
   
   [SIMPLE_GUESS_FORALL_FORALL]  Theorem
      
      ⊢ ∀v i P.
          (∀v2. SIMPLE_GUESS_FORALL v i (P v2)) ⇒
          SIMPLE_GUESS_FORALL v i (∀v2. P v2)
   
   [SIMPLE_GUESS_FORALL_IMP_1]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_EXISTS v i P1 ⇒ SIMPLE_GUESS_FORALL v i (P1 ⇒ P2)
   
   [SIMPLE_GUESS_FORALL_IMP_2]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_FORALL v i P2 ⇒ SIMPLE_GUESS_FORALL v i (P1 ⇒ P2)
   
   [SIMPLE_GUESS_FORALL_NEG]  Theorem
      
      ⊢ ∀v i P. SIMPLE_GUESS_EXISTS v i P ⇒ SIMPLE_GUESS_FORALL v i (¬P)
   
   [SIMPLE_GUESS_FORALL_OR_1]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_FORALL v i P1 ⇒ SIMPLE_GUESS_FORALL v i (P1 ∨ P2)
   
   [SIMPLE_GUESS_FORALL_OR_2]  Theorem
      
      ⊢ ∀v i P1 P2.
          SIMPLE_GUESS_FORALL v i P2 ⇒ SIMPLE_GUESS_FORALL v i (P1 ∨ P2)
   
   [SIMPLE_GUESS_FORALL_THM]  Theorem
      
      ⊢ ∀i P. (∀v. SIMPLE_GUESS_FORALL v i (P v)) ⇒ ((∀v. P v) ⇔ P i)
   
   [SIMPLE_GUESS_SELECT_THM]  Theorem
      
      ⊢ ∀i P.
          (∀v. SIMPLE_GUESS_EXISTS v i (P v)) ⇒
          ((@v. P v) = if P i then i else @v. F)
   
   [SIMPLE_GUESS_SOME_THM]  Theorem
      
      ⊢ ∀i P.
          (∀v. SIMPLE_GUESS_EXISTS v i (P v)) ⇒
          ((some v. P v) = if P i then SOME i else NONE)
   
   [SIMPLE_GUESS_UEXISTS_THM]  Theorem
      
      ⊢ ∀i P. (∀v. SIMPLE_GUESS_EXISTS v i (P v)) ⇒ ((∃!v. P v) ⇔ P i)
   
   [SND_PAIR_EQ]  Theorem
      
      ⊢ ∀p p1. ((p1,SND p) = p) ⇔ (p1 = FST p)
   
   [SND_PAIR_EQ_SYM]  Theorem
      
      ⊢ ∀p p1. (p = (p1,SND p)) ⇔ (FST p = p1)
   
   [SOME_THE_EQ]  Theorem
      
      ⊢ ∀opt. (SOME (THE opt) = opt) ⇔ IS_SOME opt
   
   [SOME_THE_EQ_SYM]  Theorem
      
      ⊢ ∀opt. (opt = SOME (THE opt)) ⇔ IS_SOME opt
   
   [UNWIND_EXISTS_THM]  Theorem
      
      ⊢ ∀a P. (∃x. P x) ⇔ (∀x. x ≠ a ⇒ ¬P x) ⇒ P a
   
   
*)
end


Source File Identifier index Theory binding index

HOL 4, Trindemossen-1