Watson

Natural proofs

Proofs that read like proofs

Paragraph that talks about how cool watson proofs are

  • Steps read as sentences: arbitrary x; assume …; thus …
  • Syntax you define yourself; Watson has no built-in proof grammar
  • Another cool fact
set/fn.wats
-- the inverse of a bijection is itself a bijection
theorem bij.has_inverse [f A B : term] : (f  (A  B))
    |- f⁻¹  (B  A)
proof
    follows f⁻¹  (B  A) by inv.is_fn_on;
    follows dom(f) = A by bij_on.def, inj_on.def, fn_on.is_fn;
    follows ran(f⁻¹) = A by inv.ran given dom(f) = A;
    thus x, y, x  B  y  B  f⁻¹(x) = f⁻¹(y)  x = y as
        arbitrary x; arbitrary y;
        assume x  B  y  B  f⁻¹(x) = f⁻¹(y) then x = y as
            follows f(f⁻¹(x)) = x  f(f⁻¹(y)) = y by inv.apply;
            done logically;
        done logically;
    follows f⁻¹  (B  A) by inj_on.def;
    done by bij_on.def
qed