anchor.diff:  
   let LAMBDA_UNIQUE = prove((parse_term "!f:A^B g.
           (!i. 1 <= i /\ i <= dimindex(:B) ==> (f$i = g i)) <=>
  -        ((lambda) g = f)"),
  -        SIMP_TAC [CART_EQ; LAMBDA_BETA]
  +        ((lambda) g = f)"), SIMP_TAC [CART_EQ; LAMBDA_BETA]
           |> THEN <| MESON_TAC [])
   let LAMBDA_ETA = 
       prove
  
positive.code:              "s PCROSS t = {pastecart (x:A^M) (y:A^N) | x IN s /\ y IN t}")
  
  let FORALL_IN_PCROSS = prove((parse_term "(!z. z IN s PCROSS t ==> P z) <=>
     (!x y. x IN s /\ y IN t ==> P(pastecart x y))"),
     REWRITE_TAC [PCROSS; FORALL_IN_GSPEC])
  let EXISTS_IN_PCROSS = prove((parse_term "(?z. z IN s PCROSS t /\ P z) <=>
     (?x y. x IN s /\ y IN t /\ P(pastecart x y))"),
     REWRITE_TAC [PCROSS; EXISTS_IN_GSPEC; CONJ_ASSOC])
  let PASTECART_IN_PCROSS = 
      prove
          ((parse_term 
  
negative.code:          <| REWRITE_TAC [FORALL_IN_PCROSS; FSTCART_PASTECART; SNDCART_PASTECART])
  
  let FINITE_PCROSS = prove((parse_term "!(s:A^M->bool) (t:A^N->bool).
          FINITE s /\ FINITE t ==> FINITE(s PCROSS t)"), MESON_TAC [REWRITE_RULE [HAS_SIZE] HAS_SIZE_PCROSS])
  
  let FINITE_PCROSS_EQ = 
      prove((parse_term "!(s:A^M->bool) (t:A^N->bool).
  