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